sql >> データベース >  >> RDS >> Oracle

Oracleパイプライン関数の例

    この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
    20
    1. 同時アクセス時にテーブル内の特定の行数をマークする方法

    2. mysqlは通貨としてintを選択しますか、それともintを通貨形式に変換しますか?

    3. 高速テストのためにPostgreSQLを最適化する

    4. dbms_output.put_line