SQL ルーチンでのプロシージャーの結果セットの受け取り

SQL-bodied ルーチン (SQL を本体としてもつルーチン) 内から呼び出したプロシージャーから、結果セットを受け取ることができます。

始める前に

呼び出したプロシージャーからいくつの結果セットが戻されるかを知っている必要があります。 呼び出し元のルーチンが受け取る各結果セットごとに、結果セットを宣言しなければなりません。

手順

SQL-bodied ルーチンからのプロシージャー結果セットを受け入れるには、次のようにします。

  1. プロシージャーから戻される各結果セットごとに結果セット・ロケーターを宣言します。 以下に例を示します。
       DECLARE result1 RESULT_SET_LOCATOR VARYING;
       DECLARE result2 RESULT_SET_LOCATOR VARYING;
       DECLARE result3 RESULT_SET_LOCATOR VARYING;
  2. プロシージャーを呼び出します。 以下に例を示します。
       CALL targetProcedure();
  3. 結果セット・ロケーター変数 (上記で定義済み) を呼び出し元のプロシージャーに関連付けます。 以下に例を示します。
       ASSOCIATE RESULT SET LOCATORS(result1, result2, result3)
          WITH PROCEDURE targetProcedure;
  4. 呼び出し先のプロシージャーから渡される結果セット・カーソルをその結果セット・ロケーターに割り振ります。 以下に例を示します。
       ALLOCATE rsCur CURSOR FOR RESULT SET result1;
  5. 結果セットから行を取り出します。 以下に例を示します。
       FETCH rsCur INTO ...