Oracle Query - 缺少定义

thi*_*ieu 7 sql oracle plsql oracle-sqldeveloper

我创建了一个非常简单的表:

CREATE TABLE TMP ("ID" VARCHAR2(20 BYTE));
Run Code Online (Sandbox Code Playgroud)

然后尝试这样做:

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;
Run Code Online (Sandbox Code Playgroud)

然后输入绑定

在此输入图像描述

并得到此错误:

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
Run Code Online (Sandbox Code Playgroud)

我没有运气弄清楚它想要什么.如果我将':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
Run Code Online (Sandbox Code Playgroud)

编辑:我刚刚注意到错误并没有阻止数据正确合并......但错误仍然存​​在

WW.*_*WW. 1

尝试在语句后面单独添加一个斜杠。然后突出显示整个块并按 F5。