代码之家  ›  专栏  ›  技术社区  ›  M.Laida

Z-ORA-01745:无效的主机/绑定变量名(PLSQL)

  •  1
  • M.Laida  · 技术社区  · 8 年前

    我对plsql中的动态变量有点新的认识。 我在EXECUTE IMMEDIATE上收到一个错误“invalid host/bind variable name” 陈述。提前谢谢。

    CREATE OR REPLACE PROCEDURE MY_CLASS_CONFIG_DML (pBuCode     VARCHAR2,
                                                     pMyPKId     VARCHAR2,
                                                     pMyName     VARCHAR2,
                                                     pMyId       VARCHAR2,
                                                     pRemarks    VARCHAR2,
                                                     pUserId     VARCHAR2)
    AS
        v_table      VARCHAR2 (50);
        v_lastdate   DATE;
        --bindable var.
        v_pkey       VARCHAR2 (12) := pMyPKId;
        v_myname     VARCHAR2 (30) := pMyName;
        v_bucode     VARCHAR2 (4) := pBuCode;
        v_myid       VARCHAR2 (12) := pMyId;
        v_remarks    VARCHAR2 (50) := pRemarks;
        v_lastid     VARCHAR2 (8) := pUserId;
    BEGIN
        v_lastdate := SYSDATE;
        v_table := v_bucode || '_WORKSHEET_CONFIG';
    
        --Error happens on this part
        EXECUTE IMMEDIATE
               'insert into '
            || v_table
            || '(pk_id,my_name,my_id,remarks,last_user,last_date)
          values(:pkey,:myname,:myid,:remarks,:user,:lastdate)'
            USING v_pkey,
                  v_myname,
                  v_myid,
                  v_remarks,
                  v_lastid,
                  v_lastdate;
    
        --end comment
        COMMIT;
        RETURN;
    EXCEPTION
        WHEN OTHERS
        THEN
            ROLLBACK;
    END MY_CLASS_CONFIG_DML;
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   kara    8 年前

    替换 :user 通过另一个关键字: :myuser :lastid . 冒号应该可以使用保留关键字“user”,但这是我看到的唯一问题。