这里是:
declare
v_str1 varchar2(80);
begin
v_str1 := 'test';
print :v_str1;
end
当我在 SQL 工作表中使用 SQLDeveloper 运行它时,我得到:
Bind Variable "v_str1" is NOT DECLARED
anonymous block completed
明白了:
set serveroutput on
declare
v_str1 varchar2(80);
begin
v_str1 := 'test';
dbms_output.put_line(v_str1);
end;
:VARNAME 形式的绑定变量语法主要用于 SQL* Plus(我认为动态 SQL 的绑定变量除外)。 对于 SQL* Developer、PL/SQL Developer 或其他应用程序,有“&”用于变量替换:
declare
v_str1 varchar2(80);
begin
v_str1 := &v_str;
print v_str1;
end
编辑: 我的错,Oracle SQL*Developer 的代码应该是:
set serveroutput on;
declare
v_str1 varchar2(80);
begin
v_str1 := '&v_str';
dbms_output.put_line(v_str1);
end;
您必须选择所有内容并执行它。结果将出现在“脚本输出”面板中。
print
不是 PLSQL 函数。如果你想得到输出,你可以使用 dbms_output.put_line(v_str1);
set serveroutput on;
declare v_str1 varchar2(80);
begin
v_str1 := 'test';
dbms_output.put_line(v_str1);
end;
:v_str1 是一个绑定变量,但您必须不在 plsql 中声明。当你声明它时,你必须使用 VARIABLE 关键字。
尝试
declare
v_str1 varchar2(80);
begin
v_str1 := 'test';
print v_str1;
end
variable V_STR1 varchar2(20);--bind variable
--IF You want to use bind variable you must declare before your PL/SQL block.
set serveroutput on;--TO see the output
set autoprint on;--TO SEE THE BIND VARIABLE VALUE WHEREVER WE USED IN PL/SQL CODE
declare
V_STR2 varchar2(80);--normal variable
begin
:V_STR1 := 'Hello';--assigning value to bind variable
V_STR2 := 'test';
DBMS_OUTPUT.PUT_LINE(:V_STR1);
DBMS_OUTPUT.PUT_LINE(V_STR2);
end;
/