用Table變數返回多行資料

StudyCow發表於2009-12-28

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

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 ;

--查詢資料

select * from table(GetPersonInfo)

[@more@]

---

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7839206/viewspace-1030041/,如需轉載,請註明出處,否則將追究法律責任。

相關文章