如何使用FETCH获取游标中的列?

时间:2012-11-01 10:59:06

标签: oracle plsql oracle10g cursor oracle11g

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获取两列?

1 个答案:

答案 0 :(得分: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;