日期:2014-05-17  浏览次数:20734 次

怎样在sql中使用function返回的cursor
有一个function,定义如下:
type   cur   is   ref   cursor;
function   mytest   return   cur
is  
        c   cur;
begin
        open   c   for   (select   *   from   mytable);
        return   c;
end;

非常简单,就是在function中返回了一个cursor。但是现在我需要在sql(注意,是普通的sql,不是pl/sql,也不是在java,c#等中使用)中使用这个cursor,打印出它的内容,这个sql怎么写?

直接使用
select   *   from   mytest()不行,是不是需要一个什么转换函数?

------解决方案--------------------
不太明白你的意思,是不是你想要的是个sql语句?
------解决方案--------------------
select mytest() from dual;
不知道是不是你想要的。
------解决方案--------------------
一个范例:


create package pkg_test
is
type cur is ref cursor;
end;
create or replace function mytest return pkg_test.cur
is
c pkg_test.cur;
begin
open c for select * from emp;
return c;
end;

select mytest() from dual;
------解决方案--------------------
你可以使用Pipelined Table Functions