更改为使用2个已定义的变量

时间:2011-02-08 19:15:46

标签: oracle oracle10g

我想改变这个..

variable myref REFCURSOR
begin
  OPEN :myref FOR 
    select sysdate,12345 xid from dual
      union all
    select sysdate,67890 xid from dual;
end;
/
print myref 

为xid列使用2个已定义的变量(12345和67890)。我似乎无法使用上述代码的语法。

像这样的东西

declare 
myNum1 NUMBER:=12345
myNum2 NUMBER:=67890

variable myref REFCURSOR
begin
  OPEN :myref FOR 
    select sysdate,|| myNum1 || xid from dual
      union all
    select sysdate,|| myNum2 || xid from dual;
end;
/
print myref 

1 个答案:

答案 0 :(得分:1)

VARIABLE声明必须在PL / SQL块之外进行,因为它是用于创建替换变量的SQL * Plus命令。数值变量可以在PL / SQL块中声明,并且像任何其他PL / SQL变量一样被引用

SQL> variable myref REFCURSOR
SQL> declare
  2    myNum1 number := 12345;
  3    myNum2 number := 67890;
  4  begin
  5    open :myref
  6     for
  7     select sysdate, myNum1 xid from dual
  8     union all
  9     select sysdate, myNum2 from dual;
 10  end;
 11  /

PL/SQL procedure successfully completed.

SQL> print myref;

SYSDATE          XID
--------- ----------
08-FEB-11      12345
08-FEB-11      67890