Z-ORA-01745:无效的主机/绑定变量名(PLSQL)
我对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
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谢谢您提供的信息,我想我已经收到了。祝您有个美好的一天!在我用自己的演示表名硬编码之后,代码对我来说很有用。一个复制这种行为的简单演示会有所帮助(在创建过程中,您甚至可以自己发现问题)。