有一个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()不行,是不是需要一个什么转换函数?
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()不行,是不是需要一个什么转换函数?
不知道是不是你想要的。
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;
select mytest() from dual
在datagrid里只显示出一个单元格,里面写的是(CURSOR)如果按F5的话,在Script Output中到是可以显示出所有数据。但是我需要的是在F9的datagrid中显示出所有数据,不然我没有办法在c1report中使用
你所说的Pipelined Table Functions是不是先定义一个object,再定义一个table of object,然后在function中使用pipe row()?
这样的方式我会,但是它太麻烦了,因为要一旦返回的字段要修改,就要修改那个object,非常不方便,所以最后还是在考虑cursor