【问题标题】:Anonymous block not working on SQL Developer but running on Toad匿名块不在 SQL Developer 上运行,但在 Toad 上运行
【发布时间】:2021-03-26 07:28:17
【问题描述】:

我有一个运行 Toad 但不运行 SQL Developer 的脚本。我尝试绑定变量但不工作。

DECLARE
  retval                  sys_refcursor;

BEGIN
  retval :=
  SCHEMA_NAME.student_pkg.get_info_fn
                                      (pi_no,                              
                                        );
  DBMS_OUTPUT.put_line ('PO_NO: ' || pi_no);
  :A := retval;
END;
/

我尝试了 &:A 和 &&:A 但它不起作用。我的错误是:

 Bind Variable "A" is NOT DECLARED
 anonymous block completed

你有什么想法吗?

【问题讨论】:

    标签: oracle plsql oracle-sqldeveloper


    【解决方案1】:

    我试过 &:A 和 &&:A

    您正在混合绑定变量 (:) 和替换变量 (&)。

    如果你想作为脚本运行(F5)那么你需要在客户端声明绑定变量:

    variable a refcursor
    
    DECLARE
    retval                  sys_refcursor;
    
    BEGIN
      retval :=
      SCHEMA_NAME.student_pkg.get_info_fn
                                          (pi_no,                              
                                            );
      DBMS_OUTPUT.put_line ('PO_NO: ' || pi_no);
      :A := retval;
    END;
    /
    
    print a
    

    (你不需要retval;你可以直接使用:a := ...get_info_fn(...);。)

    print 是显示结果的客户端命令。

    如果您将块作为语句运行 (F5),那么您将看到一个对话框来分配语句中使用的绑定值;但这对于传入值比将值传出更有帮助。

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 2019-01-03
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      相关资源
      最近更新 更多