如何在SQL * PLUS中定义持久变量

时间:2020-03-06 14:40:23  来源:igfitidea点击:

我试图在ORACLE的SQL * PLUS中执行以下操作。

-创建一个变量
-将其作为输出变量传递给我的方法调用
-从输出变量中打印值

我收到错误"未声明的变量"错误。我试图创建一个在会话中持续存在的变量,直到关闭SQL * PLUS窗口为止。

variable subhandle number;
exec MYMETHOD - 
(CHANGE_SET => 'SYNC_SET', - 
DESCRIPTION => 'Change data for emp', - 
SUBSCRIPTION_HANDLE => :subhandle);

print subhandle;

解决方案

请我们重新发布,但是用代码标签格式化代码...。(即101 010按钮)我认为会出现一些额外的"-"字符,这意味着解释起来更加困难。

如果可以代替/也可以复制SQLPlus窗口的内容,则查看SQLPlus报告该错误可能也会有所帮助?

但这看起来是正确的。

应该检查一下我们对此做了什么仔细检查:

SQL> create procedure myproc (p1 out number)
  2  is
  3  begin
  4     p1 := 42;
  5  end;
  6  /

Procedure created.

SQL> variable subhandle number
SQL> exec myproc(:subhandle)

PL/SQL procedure successfully completed.

SQL> print subhandle

 SUBHANDLE
----------
        42

我不确定这是否是我们要的内容,但是我们是否尝试过&& variable语法?你可以做

select &&subhandle from dual

或者在脚本开始处添加此类内容,则应在会话的其余部分将"子句柄"绑定到该值。