【问题标题】: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 命令。

标签: oracle variables plsql


【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-06
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 2021-12-11
        • 2022-01-21
        相关资源
        最近更新 更多