首頁| 新聞| 娛樂| 游戲| 科普| 文學| 編程| 系統| 數據庫| 建站| 學院| 產品| 網管| 維修| 辦公| 熱點
管道化表函數必須返回一個集合。在函數中,PipE ROW 語句被用來返回該集合的單個元素,該函數必須以一個空的 RETURN 語句結束,以表明它已經完成。一旦我們創建了上述函數,我們就可以使用 TABLE 操作符從 SQL 查詢中調用它。
管道化表函數經常被用來把數據從一種類型轉化成另一種類型。
下面是用Pipelined Table實現split函數的示例:
CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_split PIPELINEDIS j INT := 0; i INT := 1; len INT := 0; len1 INT := 0; str VARCHAR2 (4000);BEGIN len := LENGTH (p_str); len1 := LENGTH (p_delimiter); WHILE j < len LOOP j := INSTR (p_str, p_delimiter, i); IF j = 0 THEN j := len; str := SUBSTR (p_str, i); PIPE ROW (str); IF i >= len THEN EXIT; END IF; ELSE str := SUBSTR (p_str, i, j - i); i := j + len1; PIPE ROW (str); END IF; END LOOP; RETURN;END fn_split;/測試:SELECT * FROM TABLE (fn_split ('1;;12;;123;;1234;;12345', ';;'));結果:112123123412345又一個簡單的例子:CREATE TYPE mytype AS OBJECT ( field1 NUMBER, field2 VARCHAR2 (50));CREATE TYPE mytypelist AS TABLE OF mytype;CREATE OR REPLACE FUNCTION pipelineme RETURN mytypelist PIPELINEDIS v_mytype mytype;BEGIN FOR v_count IN 1 .. 20 LOOP v_mytype := mytype (v_count, 'Row ' || v_count); PIPE ROW (v_mytype); END LOOP; RETURN;END pipelineme;SELECT * FROM TABLE (pipelineme);FIELD1 FIELD2 ------ ------------------------ 1 Row 1 2 Row 2 3 Row 3 4 Row 4 5 Row 5 6 Row 6 7 Row 7 8 Row 8 9 Row 9 10 Row 10 11 Row 11 12 Row 12 13 Row 13 14 Row 14 15 Row 15 16 Row 16 17 Row 17 18 Row 18 19 Row 19 20 Row 2020 rows selected
練就火眼金睛 十一種常見電腦
打印機共享提示“操作無法完成
如何查找有故障的配件
回眸一笑百魅生,六宮粉黛無顏色
歲月靜美,剪一影煙雨江南
蕪湖有個“松鼠小鎮”
小滿:小得盈滿,一切剛剛好!
一串串晶瑩剔透的葡萄,像一顆顆寶石掛在藤
正宗老北京脆皮烤鴨
人逢知己千杯少,喝酒搞笑圖集
搞笑試卷,學生惡搞答題
新聞熱點
疑難解答
圖片精選
6類網線的完美接法
使用VMM2008 R2管理Hyper-V之1-實
開機黑屏與內存的原因導致DDR2內存
Lua中基本的數據類型、表達式與流
網友關注