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

时间:2008-09-24 16:33:02

标签: oracle plsql

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

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

我得到了

  

未声明的变量

错误。我正在尝试创建一个在会话中持续存在的变量,直到我关闭SQL*PLUS窗口。

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

print subhandle;

3 个答案:

答案 0 :(得分:3)

应该没问题 - 请仔细检查你对此做了什么:

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

答案 1 :(得分:0)

请你重新发帖,但是用代码标签格式化代码....(即101 010按钮)我认为一些额外的“ - ”字符通过,这意味着它更难以解释。

如果你可以复制SQL Plus窗口的内容,那么看看SQL Plus报告错误也可能有帮助吗?

但它看起来是正确的。

答案 2 :(得分:0)

我不确定这是否是您要找的,但您是否尝试过&&variable语法?你可以做到

select &&subhandle from dual

或者在脚本开头的某些内容,然后subhandle应该绑定到会话剩余部分的值。