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

4

1 回答 1

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 是一个伪列,并在文档中进行了介绍。但是,为了完整起见,我们可以使用它来限制这样的结果集:

select Name,Rollno
from emp
where rownum <= 1;
于 2012-11-01T11:15:09.650 回答