用Table變量返回多行數據

要讓 PL/SQL 函數返回數據的多個行,必須經過返回一個 REF CURSOR 或一個數據集合來完成。REF CURSOR 的這種狀況侷限於能夠從查詢中選擇的數據,而整個集合在能夠返回前,必須進行具體化。Oracle 9i 經過引入的管道化表函數糾正了後一種狀況。下面是一個具體的例子:ide

create type PersonInfo as object(id number,name varchar2(200));
create type PersonInfoArray as table of PersonInfo ;函數

create or replace function GetPersonInfo
return PersonInfoArray pipelined
is
v_PersonInfo PersonInfo;
begin
for v_count in 1..30 loop
v_PersonInfo:=PersonInfo(id => v_count,name => 'sss'||to_char(v_count));
pipe row (v_PersonInfo);
end loop;
return ;
end GetPersonInfo ;oop

 

--查詢數據ip

select * from table(GetPersonInfo)it