日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺談Oracle函數(shù)返回Table集合

在調(diào)用Oracle函數(shù)時為了讓PL/SQL 函數(shù)返回數(shù)據(jù)的多個行,必須通過返回一個 REF CURSOR 或一個數(shù)據(jù)集合來完成。REF CURSOR 的這種情況局限于可以從查詢中選擇的數(shù)據(jù),而整個集合在可以返回前,必須進行具體化。 9i 通過引入Oracle函數(shù)中的管道化表函數(shù)糾正了后一種情況。表函數(shù)是返回整個行的集(通常作為一個集合)的函數(shù),可以直接從 SQL 語句中進行查詢,就好像它是一個真正的數(shù)據(jù)庫表一樣。管道化表函數(shù)與之相似,但是它像在構(gòu)建時一樣返回數(shù)據(jù),而不是一次全部返回。管道化表函數(shù)更加有效,因為數(shù)據(jù)可以盡可能快地返回。

站在用戶的角度思考問題,與客戶深入溝通,找到阿拉山口網(wǎng)站設(shè)計與阿拉山口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋阿拉山口地區(qū)。

管道化表函數(shù)必須返回一個集合。在函數(shù)中,PIPE ROW 語句被用來返回該集合的單個元素,該函數(shù)必須以一個空的 RETURN 語句結(jié)束,以表明它已經(jīng)完成。一旦我們創(chuàng)建了上述函數(shù),我們就可以使用 TABLE 操作符從 SQL 查詢中調(diào)用它,從而使Oracle函數(shù)返回Table集合。

1.使用自定義類型

 
 
  1. /* Formatted on 2010/02/26 08:42 (Formatter Plus v4.8.8) */  
  2. CREATE OR REPLACE TYPE objemp AS OBJECT (  
  3.    maxsal   NUMBER,  
  4.    minsal   NUMBER  
  5. );  
  6. /* Formatted on 2010/02/26 08:43 (Formatter Plus v4.8.8) */  
  7. CREATE OR REPLACE TYPE tabemp AS TABLE OF objemp;  
  8.  
  9.    

2.使用Pipeline管道函數(shù)和Pipe row()

 
 
  1. CREATE OR REPLACE FUNCTION getmaxminsalary (department NUMBER)  
  2.    RETURN tabemp PIPELINED  
  3. AS  
  4.    maximum_salary   NUMBER;  
  5.    minimum_salary   NUMBER;  
  6.    v_errorcode      NUMBER;  
  7.    v_errortext      VARCHAR2 (200);  
  8.    v                objemp;  
  9. BEGIN  
  10.    FOR myrow IN (SELECT MAX (sal) m_sal, MIN (sal) min_sal  
  11.                    FROM emp  
  12.                   WHERE deptno = departmnet)  
  13.    LOOP  
  14.       v := (myrow.m_sal, myrow.min_sal);  
  15.       PIPE ROW (v);  
  16.    END LOOP;  
  17.    RETURN;  
  18. EXCEPTION  
  19.    WHEN OTHERS  
  20.    THEN  
  21.       v_errorcode := SQLCODE;  
  22.       v_errortext := SUBSTR (SQLERRM, 1, 200);  
  23.       INSERT INTO log_table  
  24.                   (code, MESSAGE, info  
  25.                   )  
  26.            VALUES (v_errorcode, v_errortext, 'getMaxMinSalary'  
  27.                  );  
  28. END;  
  29.  

3.使用Table操作符

 
 
  1. SELECT * FROM TABLE(getMaxMinSalary(10)); 

以上是一個不錯的Oracle函數(shù)返回Table集合的實例,感興趣的讀者可以試一試。


分享標題:淺談Oracle函數(shù)返回Table集合
標題路徑:http://www.dlmjj.cn/article/ccddhec.html