pipeline 例項
CREATE OR REPLACE TYPE Lookup_Row AS OBJECT
(
Idx NUMBER,
Text VARCHAR2(20)
)
create or replace type lookups_tab as table of lookup_row
CREATE OR REPLACE FUNCTION Lookups_Fn RETURN Lookups_Tab
PIPELINED IS
v_Row Lookup_Row;
BEGIN
FOR j IN 1 .. 10 LOOP
v_Row := CASE j
WHEN 1 THEN
Lookup_Row(1, 'one')
WHEN 2 THEN
Lookup_Row(2, 'TWO')
WHEN 3 THEN
Lookup_Row(3, 'three')
WHEN 4 THEN
Lookup_Row(4, 'FOUR')
WHEN 5 THEN
Lookup_Row(5, 'five')
WHEN 6 THEN
Lookup_Row(6, 'SIX')
WHEN 7 THEN
Lookup_Row(7, 'seven')
ELSE
Lookup_Row(j, 'other')
END;
PIPE ROW(v_Row);
END LOOP;
RETURN;
END Lookups_Fn;
很多人都知道,在普通的函式中,使用dbms_output輸出的資訊,需要在伺服器執行完整個函式後一次性的返回給客戶端。但你如果需要在客戶端實時的輸出函式執行過程中的一些資訊,在Oracle 9i以後則可以使用管道函式(pipeline function)。
PIPELINED(關鍵字)表明這是一個管道函式,管道函式的返回值型別必須為集合,在函式中,PIPE ROW語句被用來返回該集合的單個元素,函式則以一個空的RETURN語句結束,以表明它已經完成。
第二個例項:
create or replace type MsgType as table of varchar2(4000)
CREATE OR REPLACE FUNCTION f_Pipeline_Test RETURN Msgtype
PIPELINED AS
BEGIN
FOR i IN 1 .. 10 LOOP
PIPE ROW('Iteration ' || i || ' at ' || Systimestamp);
--Dbms_Lock 包要授權,要不提示沒有定義 grant execute on dbms_lock to wms_ls;
dbms_lock.sleep(seconds => 1);
END LOOP;
PIPE ROW('All done!');
RETURN;
END;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21861353/viewspace-757571/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 單例項刪除ASM例項單例ASM
- php例項化物件的例項方法PHP物件
- ruby中的類例項變數和例項的例項變數變數
- 2 Day DBA-管理Oracle例項-Oracle例項和例項管理概覽Oracle
- jQuery 例項jQuery
- OkHttpClient例項HTTPclient
- phpcocket例項PHP
- unittest例項
- RAC 例項 遷移到 單例項 -- 使用RMAN Duplicate單例
- UML用例圖例項解析
- js監聽鍵盤事件程式碼例項例項JS事件
- 演示中斷處理的例項(例項六)(轉)
- SQLMAP 例項COOKBOOKSQL
- ORM 例項教程ORM
- Java例項教程Java
- java介面例項Java
- YACC 例項分析
- Pull解析例項
- 管理 ASM 例項ASM
- 停止ASM例項ASM
- jQueryAjax例項演示jQuery
- 管理ORACLE例項Oracle
- 例項和物件物件
- Ant打包例項
- SQL TOP 例項SQL
- 類和例項
- 策略模式例項模式
- pinctrl使用例項
- Activiti的流程例項【ProcessInstance】與執行例項【Execution】
- JavaScript單例模式概念與例項JavaScript單例模式
- 單例模式 - 只有一個例項單例模式
- 單例與單例項之爭單例
- jQuery選項卡例項程式碼jQuery
- 如何將獨立例項轉換成叢集例項EU
- 搜尋框關鍵字智慧匹配例項程式碼例項
- RDS按量付費例項、只讀例項、OPENAPI正式釋出API
- 如何區分例項化網格中的每個例項
- tunna工具使用例項