Oracle 函數function之返回結果集

工做中常須要通過一段複雜邏輯處理後,得出的一個結果集。並可以將這個結果集做爲一個表看待,去進行關聯查詢oracle

我通常採用創建函數function的方式來處理。函數

--建立包,聲明function和type
CREATE
OR REPLACE PACKAGE PAK_TEM AS TYPE DATE_RECORD IS RECORD --自定義類型-行(含字段及類型) ( NAME VARCHAR2 (20), VALUE VARCHAR2 (20) ); TYPE DATE_TABLE IS TABLE OF DATE_RECORD; --自定義table類 FUNCTION GET_TERM_YEARS RETURN DATE_TABLE --返回table類型 PIPELINED; --流水式 END PAK_TEM; /

--實現包體中的function CREATE OR REPLACE PACKAGE BODY PAK_TEM AS FUNCTION GET_TERM_YEARS RETURN DATE_TABLE PIPELINED IS L_RESULT DATE_RECORD; BEGIN FOR REC IN (SELECT DISTINCT TO_CHAR (STATUS_TIME, 'YYYY') FROM TEM_TB WHERE TO_CHAR (STATUS_TIME, 'YYYY') != '0001') LOOP L_RESULT.NAME := REC.YEAR || ''; L_RESULT.VALUE := REC.YEAR; PIPE ROW (L_RESULT); --依次返回行 END LOOP; END; END PAK_TEM; /

像查詢一個表同樣來操做function,使用 TABLE(自定義函數)spa

SELECT * FROM  TABLE(PAK_TEM.get_term_years());

 


 

PS:如下是定義oracle的table類型示例:code

--oracle內置類型
TYPE STRING_TABLE IS TABLE OF VARCHAR(2000);

--自定義類型(DATE_RECORD)
TYPE DATE_RECORD IS RECORD --自定義類型-行(含字段及類型)
(
NAME VARCHAR2 (20),
VALUE VARCHAR2 (20)
);
TYPE DATE_TABLE IS TABLE OF DATE_RECORD; --自定義table類(DATE_TABLE)
相關文章
相關標籤/搜索