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

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

數(shù)據(jù)庫(kù) Oracle
在oracle數(shù)據(jù)庫(kù)中,使用管道化表函數(shù),就可以實(shí)現(xiàn)返回表,下面就為您詳細(xì)介紹該方法的實(shí)現(xiàn)過(guò)程,供您參考學(xué)習(xí)。

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

包里面用一個(gè)存儲(chǔ)過(guò)程,返回游標(biāo),就可以了

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

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

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

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

以下是一個(gè)十分簡(jiǎn)單的實(shí)例:

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

這個(gè)方案基本可以實(shí)現(xiàn)返回表的要求,但是需要注意的是,過(guò)多的集合對(duì)象的申請(qǐng)不利于管理。
 
 

 

 

【編輯推薦】

帶您了解Oracle FBI索引

詳解Windows下卸載Oracle數(shù)據(jù)庫(kù)

詳解如何將Oracle安裝為L(zhǎng)inux服務(wù)

詳解Oracle多種表連接方式

oracle中使用SQL遞歸語(yǔ)句的例子

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-09-06 16:52:17

SQL函數(shù)

2010-04-14 15:09:49

Oracle函數(shù)

2010-11-16 11:32:54

ORACLE增加表空間

2010-10-25 11:39:16

oracle函數(shù)

2010-10-27 14:41:45

Oracle查詢用戶表

2010-11-16 14:53:02

Oracle游標(biāo)表達(dá)式

2009-10-28 16:31:37

Oracle傳輸表空間

2011-08-30 17:33:10

OracleSAS宏

2011-04-13 13:56:52

Oracle臨時(shí)表

2010-04-14 13:22:10

Oracle系統(tǒng)函數(shù)

2010-10-25 17:08:34

oracle聚合函數(shù)

2010-10-25 14:28:53

oracle trun

2010-10-25 16:52:48

oracle管道函數(shù)

2011-05-18 10:07:13

oracle存儲(chǔ)

2010-04-01 09:11:05

Oracle函數(shù)

2011-04-15 13:02:56

Oracle函數(shù)

2010-10-29 16:48:30

oracle查詢所有表

2010-11-16 10:32:01

Oracle創(chuàng)建表空間

2010-04-01 09:46:04

Oracle日期函數(shù)

2011-03-16 09:42:27

Oracle臨時(shí)表
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 色婷婷综合网 | 在线日韩视频 | 亚洲精品在线免费播放 | 日韩精品四区 | 欧美a在线 | 国产亚洲欧美日韩精品一区二区三区 | 国产精品综合色区在线观看 | 五月天婷婷丁香 | 国产高清视频在线观看 | 在线观看中文字幕视频 | av特级毛片| 久操伊人 | 亚洲视频精品在线 | 成人在线看片 | 国产欧美精品一区二区三区 | 国产精品成人品 | 成人免费黄色片 | 激情毛片| 久久久噜噜噜久久中文字幕色伊伊 | 免费av一区二区三区 | 欧美日韩1区2区3区 欧美久久一区 | 日本精品久久久一区二区三区 | 亚洲精品久久久久久宅男 | 狠狠婷婷综合久久久久久妖精 | 国产精品区二区三区日本 | 国产传媒视频在线观看 | 91视频免费| 久久成人人人人精品欧 | 亚洲人人 | 亚洲欧美男人天堂 | 中文字幕日韩一区 | 天天干天天爱天天操 | 99亚洲综合 | 亚洲啊v在线 | 国产精品一区二区电影 | 欧美在线一区二区三区 | 99国内精品久久久久久久 | 欧美日韩视频在线第一区 | 五月婷婷在线播放 | 美女视频一区 | 欧美精品一区二区在线观看 |