这个 PL/SQL 有啥问题?绑定变量 * 未声明
Posted
技术标签:
【中文标题】这个 PL/SQL 有啥问题?绑定变量 * 未声明【英文标题】:What is wrong with this PL/SQL? Bind Variable * is NOT DECLARED这个 PL/SQL 有什么问题?绑定变量 * 未声明 【发布时间】:2009-10-20 23:09:14 【问题描述】:这里是:
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
【问题讨论】:
什么是“打印”?我知道没有同名的 PL/SQL 命令。 【参考方案1】:知道了:
set serveroutput on
declare
v_str1 varchar2(80);
begin
v_str1 := 'test';
dbms_output.put_line(v_str1);
end;
More info here.
【讨论】:
【参考方案2】::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;
您必须选择所有内容并执行它。结果将出现在“脚本输出”面板中。
【讨论】:
它提示输入 V_str 的值,然后抛出错误 ORA-06550。如果将其更改为打印 :V_str1;你得到绑定变量“v_str1”未声明。【参考方案3】: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 关键字。
【讨论】:
【参考方案4】:试试
declare
v_str1 varchar2(80);
begin
v_str1 := 'test';
print v_str1;
end
【讨论】:
以上是关于这个 PL/SQL 有啥问题?绑定变量 * 未声明的主要内容,如果未能解决你的问题,请参考以下文章
sqlplus pl/sql Date/Time 用户输入理解为绑定变量