如何oracle function 返回结果集
发布网友
发布时间:2022-04-07 21:40
我来回答
共4个回答
热心网友
时间:2022-04-07 23:10
我试着去弄了一下,只能返回游标啊
select xx from al好像本身只能返回一行数据,无法返回多行数据
以下是我做一个返回游标的函数。
create or replace package types as
type mytype is ref cursor;
end;
create or replace function oraclefunc(col_in varchar)
return types.mytype is
mycursor types.mytype;
restr varchar2(4096);
begin
restr:=trim(col_in);
restr:=replace(restr,',',''' as 列名 from al union select ''');
restr:=''''||restr||'''';
restr:='select '||restr;
restr:=restr||' as 列名 from al';
open mycursor for restr;
return mycursor;
end;
热心网友
时间:2022-04-08 00:28
create or replace package pkg_test as
/* 定义ref cursor类型
*/
type myrctype is ref cursor;
--函数申明
function get(p_a VARCHAR2,p_b VARCHAR2) return myrctype;
end pkg_test;
--body
CREATE OR REPLACE package body pkg_test as
--函数体
FUNCTION get(p_a VARCHAR2,p_b VARCHAR2) return myrctype is
rc myrctype; --定义ref cursor变量
begin
open rc for select p_a FROM al UNION SELECT p_b FROM al;
return rc;
end get;
end pkg_test;
执行。。
SELECT pkg_test.get('a','b') FROM al;
得到结果是:
----------------------------------=
得到一个游标,然后可以通过游标来得到结果集,结果集如下:
1 a
2 b
热心网友
时间:2022-04-08 02:02
wastelandxf的回答很好了,建议采纳!
热心网友
时间:2022-04-08 03:54
为什么要使用函数呢?用存储过程不行?