SQL プロシージャーのカーソル
SQL プロシージャーでは、結果セット (データ行のセット) の定義と、1 行ずつのベースでの複雑な論理の実行は、カーソルによって可能になります。
また、SQL プロシージャーは、この同じメカニックを使用して、結果セットを定義し、SQL プロシージャーの呼び出し元またはクライアント・アプリケーションに結果セットを直接戻すこともできます。
カーソルを、一連の行の中の 1 つの行を指すポインターとみなすことができます。 カーソルは、一度に 1 つの行のみを参照できる一方で、必要に応じて結果セットの他の行に移動することもできます。
SQL プロシージャーでカーソルを使用するには、次のようにする必要があります。
- 結果セットを定義するカーソルを宣言します。
- カーソルをオープンし、結果セットを確立します。
- 必要に応じて、一度に 1 行ずつ、カーソルからローカル変数にデータを取り出します。
- 完了したなら、カーソルをクローズします。
カーソルを処理するには、次のような SQL ステートメントを使用する必要があります。
- DECLARE CURSOR
- OPEN
- FETCH
- CLOSE
以下の例は、SQL プロシージャー内での読み取り専用カーソルの基本的な使用法を示しています。
CREATE PROCEDURE sum_salaries(OUT sum INTEGER)
LANGUAGE SQL
BEGIN
DECLARE p_sum INTEGER;
DECLARE p_sal INTEGER;
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE c CURSOR FOR SELECT SALARY FROM EMPLOYEE;
SET p_sum = 0;
OPEN c;
FETCH FROM c INTO p_sal;
WHILE(SQLSTATE = '00000') DO
SET p_sum = p_sum + p_sal;
FETCH FROM c INTO p_sal;
END WHILE;
CLOSE c;
SET sum = p_sum;
END