ストアドプロシージャの使用方法

Denodo ストアドプロシージャはいくつかの方法で呼び出すことができます。

  1. SELECT ステートメントの FROM 句でプロシージャを呼び出し、WHERE 句で入力パラメーターを指定します。以下に例を示します。

    SELECT database_name, name, type, description, view_type, swap_active, folder
    FROM GET_VIEWS()
    WHERE
        input_database_name = 'customer360'
    AND (input_init_create_date = ADDDAY(CURRENT_DATE, -1));
    

    この方法でストアドプロシージャを呼び出すと、結果のスキーマにはストアドプロシージャの出力パラメーター と入力パラメーター が含まれます。そのため、ビューと同じ方法でストアドプロシージャを呼び出して、2 つのストアドプロシージャの結果を結合することができます。

  2. CALL ステートメントを使用します。

    CALL ステートメントの構文
    CALL <procedureName:identifier>
            ( [ <paramValue:literal> [ ,<paramValue:literal> ]* ] )
    [ CONTEXT ( 'i18n' = <literal> ) ] [ TRACE ]
    

    以下のステートメントは、 input_database_name パラメーターに「customer360」を指定して GET_VIEWS ストアドプロシージャを呼び出します。

    CALL GET_VIEWS( 'customer360', null, null, null, null, null, null, null, null, null, null, null);
    

    ストアドプロシージャの入力パラメーターがオプションの場合、 NULL を渡します。

  3. SELECT ステートメントの FROM 句からプロシージャを呼び出します。以下に例を示します。

    SELECT avgrevenue
    FROM CalculateAvgRevenue( {ROW('B78596011'), ROW('B78596012')} )
    

    この例では、 CalculateAvgRevenue プロシージャの入力パラメーターはレジスターの配列です。各レジスターには単一のフィールド (顧客の納税者 ID) が含まれています。


以下の理由により、ストアドプロシージャは最初の方法で呼び出すことをお勧めします。

  1. クエリには入力パラメーターの名前が含まれているため、クエリでどのような操作が実行されるかがすぐにわかります。 CALL を使用する場合、各パラメーターの意味を知る必要があります。

  2. すべてのパラメーターの値を指定する必要はありません。

  3. CALL を使用する場合とは異なり、SELECT ステートメントからプロシージャを呼び出すと、プロシージャの結果を他のビューと結合できます。