你好,我得到的错误,需要建议。代码是:
VARIABLE v_bind1 VARCHAR2(10); --declare bind variable
exec : v_bind1 := 'RebellionRider'; --execute it
SET SERVEROUTPUT ON;
BEGIN
dbms_output.put_line(v_bind1);
END;
当m试图声明变量时,输出如下:
Usage: VAR[IABLE] [ <variable> [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
NVARCHAR2 (n) | CLOB | NCLOB | BLOB | BFILE
REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE ] ]
,当试图打印它时,显示如下错误:
SP2-0552: Bind variable "V_BIND1" not declared.
你需要:旁边绑定名称:
VARIABLE v_bind1 VARCHAR2(10); --declare bind variable
exec :v_bind1 := 'RebellionRider'; --execute it
,然后引用为:v_bind1
。
参考:
在PL/SQL中通过键入冒号(:)来引用绑定变量立即通过变量的名称。例如
假设这是SQL*Plus而不是PL/SQL Developer,因为您发布的错误是SQL*Plus错误,这是因为后面的注释:
失败:
SQL> VARIABLE v_bind1 VARCHAR2(10); --declare bind variable
Usage: VAR[IABLE] [ <variable> [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) |
VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) |
NVARCHAR2 (n) | CLOB | NCLOB | BLOB | BFILE
REFCURSOR | BINARY_FLOAT | BINARY_DOUBLE ] ]
成功:
SQL> VARIABLE v_bind1 VARCHAR2(10);
SQL>
SQL结束符(默认为;
,但不要忘记它是可配置的)必须出现在行尾,否则SQL*Plus将无法识别它。但是像variable
SQL * +命令不需要SQL终结者和没有任何评论的语法,所以整个线是拒绝无效。
你的下一个问题是v_bind1
和:v_bind1
是两个不同的东西。这个失败是因为v_bind1
是一个未声明的PL/SQL局部变量(它需要在块中声明):
begin
dbms_output.put_line(v_bind1);
end;
/
你需要的是刚刚声明的绑定变量:v_bind1
:
begin
dbms_output.put_line(:v_bind1);
end;
/
由于v_
和:
都表示一个变量,我建议您不需要第一个。