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

时间:2018-07-30 09:03:07

标签: plsql dynamic-sql

我对plsql中的动态变量有新的了解。 我在立即执行时收到错误消息“无效的主机/绑定变量名称” 声明。预先感谢。

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 个答案:

答案 0 :(得分:2)

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