成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

oracle函數返回表的實現

數據庫 Oracle
在oracle數據庫中,使用管道化表函數,就可以實現返回表,下面就為您詳細介紹該方法的實現過程,供您參考學習。

如果要通過oracle函數實現返回表,應該如何實現呢?下面就教您一個oracle函數返回表的實現方法,供您參考,希望對您學習oracle函數能有所幫助。

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

>包的定義
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;  

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

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

調用這個oracle函數的時候,通過 table() 關鍵字把管道流仿真為一個數據集

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

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

如果oracle函數帶參數,可以寫法如下:

  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.  
  11. select * from table(fun1(100));  

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

 

 

【編輯推薦】

帶您了解Oracle FBI索引

詳解Windows下卸載Oracle數據庫

詳解如何將Oracle安裝為Linux服務

詳解Oracle多種表連接方式

oracle中使用SQL遞歸語句的例子

責任編輯:段燃 來源: 互聯網
相關推薦

2010-09-06 16:52:17

SQL函數

2010-04-14 15:09:49

Oracle函數

2010-11-16 11:32:54

ORACLE增加表空間

2010-10-25 11:39:16

oracle函數

2010-10-27 14:41:45

Oracle查詢用戶表

2010-11-16 14:53:02

Oracle游標表達式

2009-10-28 16:31:37

Oracle傳輸表空間

2011-08-30 17:33:10

OracleSAS宏

2011-04-13 13:56:52

Oracle臨時表

2010-04-14 13:22:10

Oracle系統函數

2010-10-25 17:08:34

oracle聚合函數

2010-10-25 14:28:53

oracle trun

2010-10-25 16:52:48

oracle管道函數

2011-05-18 10:07:13

oracle存儲

2010-04-01 09:11:05

Oracle函數

2010-04-01 09:46:04

Oracle日期函數

2011-03-16 09:42:27

Oracle臨時表

2010-10-29 16:48:30

oracle查詢所有表

2010-11-16 10:32:01

Oracle創建表空間

2017-03-09 13:11:48

Oracle分析函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美中文字幕在线视频 | 亚洲精品国产第一综合99久久 | 国产一区视频在线 | 尤物在线精品视频 | 国产观看 | 国产精品1区2区 | 国产夜恋视频在线观看 | 成人不卡| 亚洲三区在线观看 | 国产精品毛片一区二区三区 | 久久久久99| 成人在线影视 | av在线免费不卡 | 日韩超碰在线 | 91综合网| 香蕉视频1024 | 一级黄色录像毛片 | 日韩和的一区二区 | 午夜影院| 国产乱码精品一区二区三区五月婷 | 久久一区二区三区四区 | 都市激情亚洲 | 99av成人精品国语自产拍 | 91视频电影 | 国产精品国产精品国产专区不蜜 | 作爱视频免费观看 | 精品91av| 日韩欧美在线一区 | 亚洲夜夜爽 | 久久国产精品免费视频 | 丁香五月网久久综合 | 色网站在线免费观看 | 国产日韩欧美一区 | 欧美在线a| 一区二区三区免费 | 欧一区| 色男人的天堂 | 欧美精品一区二区三区在线播放 | 久久精品中文字幕 | 日本在线免费观看 | 国产精品一区二区电影 |