【发布时间】:2015-08-29 03:11:29
【问题描述】:
我创建了一个非常简单的表格:
CREATE TABLE TMP ("ID" VARCHAR2(20 BYTE));
然后尝试这样做:
DECLARE
whatever varchar2(20) := :bananas;
BEGIN
MERGE INTO tmp t USING
(SELECT whatever AS this_id FROM DUAL) d
ON (t.id = d.this_id)
WHEN NOT MATCHED THEN
INSERT (id) VALUES (d.this_id);
END;
然后输入绑定
并得到这个错误:
Error starting at line : 1 in command -
DECLARE
whatever varchar2(20) := :bananas;
BEGIN
MERGE INTO tmp2 t USING
(SELECT whatever AS this_id FROM DUAL) d
ON (t.id = d.this_id)
WHEN NOT MATCHED THEN
INSERT (id) VALUES (d.this_id);
END;
Error report -
Missing defines
我没有运气弄清楚它想要什么。如果我将 ':bananas' 替换为 'a' 之类的值,它会起作用,但当我使用变量并绑定值时则不行。有人知道我的查询有什么问题吗?谢谢。
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
"CORE 11.2.0.4.0 Production"
TNS for IBM/AIX RISC System/6000: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
编辑: 我刚刚注意到该错误并没有阻止数据正确合并...尽管该错误仍然令人担忧
【问题讨论】:
-
什么是
:bananas?此代码是否在存储过程中?需要定义参数。 -
我只是为变量使用了任何名称。我想将其作为带有 clob 的查询来执行,但我遇到了总是出现“缺少定义”的问题,并试图删除我的大量代码,直到我可以缩小问题范围。
-
重新阅读您的评论,它是使用 Oracle SQL Developer 上的“输入绑定”窗口在屏幕截图中定义的
-
什么是香蕉?定义香蕉。
-
这不是这个吗? i.imgur.com/Kd334Ou.png 是否定义了其他东西?
标签: sql oracle plsql oracle-sqldeveloper