永发信息网

oracle 查询函数怎么返回查询结果

答案:2  悬赏:70  手机版
解决时间 2021-02-25 12:59
  • 提问者网友:遮云壑
  • 2021-02-25 07:35
oracle 查询函数怎么返回查询结果
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-02-25 08:38
返回cursor的话,那么必须要cursor的手段来处理,不能作为查询语句的目的表。
如果需要在函数返回一个可以供查询语句使用的结果集,那么该函数的返回类型应该定义为一个索引表类型(一个table类型),然后在查询语句中使用table函数将函数返回的索引表转换成查询可以使用的目的表。示例如下:
1. 创建返回索引表所需的类型
create or replace type type_rec is object (idx integer, user_name varchar2(50));
create or replace type type_tb is table of type_rec;
2. 创建函数
create or replace function fn_return_tb
return type_tb
is
o_tb type_tb := type_tb();
i number := 0;
begin
for v_rec in (select 1 as idx, 'Andy' as user_name from dual
union select 2, 'Jack' from dual
union select 3, 'Paul' from dual) loop
o_tb.extend;
i := i + 1;
o_tb(i) := type_rec (v_rec.idx, v_rec.user_name);
end loop;
return o_tb;
end fn_return_tb;
3. 调用函数
select s.*
from table(fn_return_tb()) s;
全部回答
  • 1楼网友:duile
  • 2021-02-25 09:54
你for循环中的语句能执行么? 我觉得如果直接执行语句没有问题,可以不用设置变量ret 直接取循环的内容就好了。 select wm_concat(flag_name) into ret ——》select wm_concat(flag_name) as tmp dbms_output.put_line(ret); -----> dbms_output.put_line(code_name.tmp); return ret; ----->return code_name.tmp;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯