Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Z-ORA-01745:无效的主机/绑定变量名(PLSQL)_Plsql_Dynamic Sql - Fatal编程技术网

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

Z-ORA-01745:无效的主机/绑定变量名(PLSQL),plsql,dynamic-sql,Plsql,Dynamic Sql,我对plsql中的动态变量有点陌生。 我在立即执行时收到一个错误“无效主机/绑定变量名” 陈述提前谢谢 CREATE OR REPLACE PROCEDURE MY_CLASS_CONFIG_DML (pBuCode VARCHAR2, pMyPKId VARCHAR2, pMyName

我对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;

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

您正在绑定变量列表中传入
v_lastdate
,但您没有在声明部分声明v_lastdate。这可能(会!)是个问题…@Boneist,谢谢,已经添加了它,但是我仍然收到无效的主机/绑定错误。executeimmediate语句有什么格式吗?顺便说一下,异常隐藏器似乎没有什么帮助。如果插入的
无效,有什么可以回滚的?如果由于空间不足或索引块损坏或其他原因而失败,您是否希望将其升级,而不是在上次提交后的会话中默默地撤消所有已完成的操作?@WilliamRobertson Robertson谢谢您提供的信息,我想我已经收到了。祝您有个美好的一天!在我用自己的演示表名硬编码之后,代码对我来说很有用。一个复制这种行为的简单演示会有所帮助(在创建过程中,您甚至可以自己发现问题)。