如何从 plsql 函数创建和返回游标?

Posted

技术标签:

【中文标题】如何从 plsql 函数创建和返回游标?【英文标题】:How can I create and return a cursor from a plsql function? 【发布时间】:2011-05-07 20:14:13 【问题描述】:

我创建了一个 plsql 函数,我想创建一个游标并从函数中返回这个游标。然后我想在 Java 类中调用这个函数并从游标中检索数据。注意:光标返回一行。 我写了这样的东西,,

CREATE OR REPLACE
FUNCTION FUNCTION1 ( emp_id IN NUMBER)RETURN cursor AS

  cursor newCursor(e_id number) is  
    select * from table1 where employee_id = e_id;        
    type refCursor is ref cursor;

  BEGIN

  open newCursor(emp_id);    
  loop
  exit when newCursor%notfound;   
    fetch newCursor into refCursor;  
  end loop;
  RETURN refCursor;

END FUNCTION1;

如果我想返回一个游标,我应该使用什么返回类型?

【问题讨论】:

【参考方案1】:

按照下面的函数建模

create or replace function getemps return sys_refcursor is
v_curs sys_refcursor;
begin
open v_curs for select ename from emp;
return v_curs;
end;
/

【讨论】:

如果我想在这种情况下将参数传递给光标,我该怎么做?? 在一个包里怎么做?【参考方案2】:

sys_refcursor 是 oracle 的通用隐式游标 改为使用 EXPLICITE 游标

【讨论】:

以上是关于如何从 plsql 函数创建和返回游标?的主要内容,如果未能解决你的问题,请参考以下文章

PLSQL使用游标或函数查询重复数据

Oracle如何创建存储过程和如何调用存储过程

如何使用 pgAdmin 4.2 获取从 PG/PLSQL 中的函数返回的整个表数据或多行。

MySQL 存储过程,获取使用游标查询的结果集

PLSQL游标批量更新数据问题

在 PL SQL 中返回游标的函数,