2011-02-08 24 views
0

我想改变这个..变化使用2个定义的变量

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

使用2个定义的变量为XID柱(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

变量声明具有取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 
+0

对不起,我更新的问题更清晰 – user584583 2011-02-08 19:46:33