av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

oracle函數(shù)返回表的實現(xiàn)

如果要通過oracle函數(shù)實現(xiàn)返回表,應(yīng)該如何實現(xiàn)呢?下面就教您一個oracle函數(shù)返回表的實現(xiàn)方法,供您參考,希望對您學(xué)習oracle函數(shù)能有所幫助。

包里面用一個存儲過程,返回游標,就可以了

>包的定義
1) 包頭

 
 
 
  1. create or replace package mypk
  2. as
  3. type t_cursor is ref cursor;
  4. procedure proc(name varchar2,c out t_cursor,a number);
  5. end;

2) 包體

 
 
 
  1. create or replace package body mypk
  2. as
  3. procedure proc(name varchar2,c out t_cursor,a number)
  4. as 
  5. begin
  6. open c for select * from test where id=a and namename=name;
  7. end proc;
  8. end;

這個方案的局限性太大,無法實現(xiàn)select * from function()的要求

從oracle 9i 開始,提供了一個叫做“管道化表函數(shù)”的概念,來解決這個問題
這種類型的函數(shù),必須返回一個集合類型,且標明 pipelined
這個oracle函數(shù)不能返回具體變量,必須以一個空 return 返回
這個oracle函數(shù)中,通過 pipe row () 語句來送出要返回的表中的每一行

調(diào)用這個oracle函數(shù)的時候,通過 table() 關(guān)鍵字把管道流仿真為一個數(shù)據(jù)集

以下是一個十分簡單的實例:

 
 
 
  1. create table tb1(k number, v varchar2(10));
  2. insert into tb1(k, v) values(100,'aaa');
  3. insert into tb1(k, v) values(200,'bbb');
  4. insert into tb1(k, v) values(200,'ccc');
  5. select * from tb1;
  6. create type row_type1 as object(k number, v varchar2(10));
  7. create type table_type1 as table of row_type1;
  8. create or replace function fun1 return table_type1 pipelined as
  9. v row_type1;
  10. begin
  11. for myrow in (select k, v from tb1) loop
  12. v := row_type1(myrow.k, myrow.v);
  13. pipe row (v);
  14. end loop;
  15. return;
  16. end;
  17. select * from table(fun1);

如果oracle函數(shù)帶參數(shù),可以寫法如下:

 
 
 
  1. create or replace function fun1(i_v Int) return table_type1 pipelined as
  2. v1 row_type1;
  3. begin
  4. for myrow in (select k, v from tb1 Where k = i_v) loop
  5. v1 := row_type1(myrow.k, myrow.v);
  6. pipe row (v1);
  7. end loop;
  8. return;
  9. end;
  10. select * from table(fun1(100));

這個方案基本可以實現(xiàn)返回表的要求,但是需要注意的是,過多的集合對象的申請不利于管理。
 


網(wǎng)頁名稱:oracle函數(shù)返回表的實現(xiàn)
轉(zhuǎn)載注明:http://uogjgqi.cn/article/cochdje.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流