DECLARE CURSOR
DECLARE CURSOR ステートメントにより、SQL カーソルを定義します。
構文
DECLARE カーソル名 CURSOR FOR 選択ステートメント
[FOR UPDATE | FOR READ ONLY]
カーソル名 ::= ユーザー定義名
備考
DECLARE では、カーソルと変数はストアド プロシージャとトリガー内部でのみ許可されるため、このステートメントはストアド プロシージャまたはトリガー内部でのみ使用できます。
カーソルのデフォルト動作は読み取り専用です。したがって、更新(書き込みまたは削除)を明示的に示すには FOR UPDATE を使用する必要があります。
例
次の例では、Tuition テーブルの Degree、Residency、および Cost_Per_Credit 列から値を選択し、それらを ID 番号順に並べるカーソルが作成されます。
DECLARE BTUCursor CURSOR
FOR SELECT Degree, Residency, Cost_Per_Credit
FROM Tuition
ORDER BY ID;
============
次の例では、削除を実行するために FOR UPDATE が使用されています。
CREATE PROCEDURE MyProc(IN :CourseName CHAR(7)) AS
BEGIN
DECLARE c1 CURSOR FOR SELECT name FROM course
WHERE name = :CourseName FOR UPDATE;
OPEN c1;
FETCH NEXT FROM c1 INTO :CourseName;
DELETE WHERE CURRENT OF c1;
CLOSE c1;
END;
CALL MyProc('HIS 305')
============
DECLARE cursor1 CURSOR
FOR SELECT Degree, Residency, Cost_Per_Credit
FROM Tuition ORDER BY ID
FOR UPDATE;
関連項目