2012-11-01 16 views
0
create or replace PROCEDURE newprocedur(outname OUT VARCHAR2,outroll OUT NUMBER) AS 
    CURSOR c1 IS 
    select Name,Rollno,Section 
     from emp; 
BEGIN 
    Open c1; 
    fetch c1 into outname,outroll; 

在游标的3列中,有可能只使用FETCH抓取两列,就像我上面所做的那样?如何使用FETCH获取游标中的列?

回答

2

你在11g上。您不需要定义变量或游标。让Oracle为你付出沉重的代价。

create or replace PROCEDURE newprocedur(outname OUT VARCHAR2,outroll OUT NUMBER) 
AS 
BEGIN 
    select Name,Rollno 
    into outname,outroll 
    from emp; 
END; 

如果EMP有多行,这会引发错误。有很多方法可以解决这个问题。例如,使用ROWNUM来人为地限制结果集。或者将EMP_ID作为输入参数来选择所需的记录。这取决于这是玩具的例子还是真实世界API的开始。


“如何使用ROWNUM在上面如?”

ROWNUM是一个伪列,覆盖了in the documentation。但是,为了完整起见,我们可以使用它来限制这样的结果集:

select Name,Rollno 
from emp 
where rownum <= 1; 
+0

如何在上面使用ROWNUM?请解释先生 – 1001

相关问题