匿名块不在 SQL Developer 上运行,但在 Toad 上运行

Posted

技术标签:

【中文标题】匿名块不在 SQL Developer 上运行,但在 Toad 上运行【英文标题】:Anonymous block not working on SQL Developer but running on 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

你有什么想法吗?

【问题讨论】:

【参考方案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),那么您将看到一个对话框来分配语句中使用的绑定值;但这对于传入值比将值传出更有帮助。

【讨论】:

以上是关于匿名块不在 SQL Developer 上运行,但在 Toad 上运行的主要内容,如果未能解决你的问题,请参考以下文章

Regexp_like 在调试器网站上工作,但不在 Oracle SQL Developer 上工作

无法在 Oracle 匿名块中调用和执行 .sql 脚本文件

在 sql developer 窗口中获取结果行

PL/SQL 匿名块已完成但未显示结果

如何使用此代码添加匿名块

oracle存储过程