我在oracle中有一个SP,在我查询创建一个viewn之前返回一个游标,但由于我需要的数据的复杂性,获得它的更好的选择是SP,但我严格需要查看信息(客户端的要求),但现在我不知道如何在视图中放置/转换数据(光标),我正在检查全局临时表,但这意味着我需要在访问视图之前调用SP,那是不可能的。我必须使用select,select * from view_data_sp调用访问视图,显然性能不受影响。
我知道如何实现这一目标?
由于
答案 0 :(得分:0)
考虑使用记录类型,记录表和管道行。像这样的东西可以解决这个问题吗?
CREATE OR REPLACE package sysop as
type file_list_rec is record(filename varchar2(1024));
type file_list is table of file_list_rec;
function ls(v_directory varchar2) return file_list pipelined;
end;
/
CREATE OR REPLACE package body sysop as
function ls(v_directory varchar2) return file_list pipelined is
rec file_list_rec;
v_host_list varchar2(32000) := '';
begin
v_host_list := host_list(v_directory);
for file in (
select regexp_substr(v_host_list, '[^'||chr(10)||']+', 1, level)
from dual
connect by
regexp_substr(v_host_list, '[^'||chr(10)||']+', 1, level) is not null)
loop
pipe row (file);
end loop;
return;
end ls;
end sysop;
/