匿名块不适用于 SQL Developer 但 运行 Toad

Anonymous block not working on SQL Developer but running on Toad

我有一个 运行 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 但它不是 working.My 错误是:

 Bind Variable "A" is NOT DECLARED
 anonymous block completed

你有什么想法吗?

I tried &:A and &&: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),那么您将看到一个对话框,用于分配语句中使用的绑定值;但这对于传递值比将值输出更有帮助。