このOracleチュートリアルは、パイプライン関数を作成する方法を示しています。次の手順に従ってください:
1。タイプオブジェクトを作成する
Oracleパイプライン関数の場合、行を送信できる型オブジェクトが必要です。以下のように作成します:
CREATE OR REPLACE TYPE t_list AS TABLE OF VARCHAR2(2000); /のテーブルとして作成または置換
2。 PIPELINEDとしてストアド関数を作成する
次の関数は、上記のタイプを使用して値を返します。そして、行はSQLクエリに基づいてカーソルを介して1つずつ生成されます:
CREATE OR REPLACE FUNCTION get_values RETURN t_list PIPELINED IS l_list t_list; w_row_count NUMBER := 0; BEGIN for cur in ( SELECT 'LINE' || level as value FROM dual CONNECT BY level <= 20 ) loop PIPE ROW ( cur.value ); w_row_count := w_row_count + 1; end loop; dbms_output.put_line('Total ' || w_row_count || ' rows selected'); END get_values; /
3。 SQLクエリを使用して関数を呼び出す
最後に、上記の関数を呼び出して、必要に応じて行を取得できます。
select * from TABLE(get_values());
出力:
COLUMN_VALUE |
---|
LINE1 |
LINE2 |
LINE3 |
LINE4 |
LINE5 |
LINE6 |
LINE7 |
LINE8 |
LINE9 |
LINE10 |
… |