考慮使用記錄類型,記錄和管道行表。像這樣的東西會做的伎倆?
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;
/
謝謝米庫拉斯,我會試試這個,但我確實有一個問題,在演奏中是否有任何含義?因爲每次查詢視圖時都會完成整個過程,包括循環和調用SP? – Alex
我不知道任何可能的性能瓶頸。一旦查詢寫得很好。開銷只是靈活性的代價。 –