|
DECLARE CURSOR ステートメントにより、SQL カーソルを定義します。
DECLARE では、カーソルと変数はストアド プロシージャとトリガー内部でのみ許可されるため、このステートメントはストアド プロシージャまたはトリガー内部でのみ使用できます。
カーソルのデフォルト動作は読み取り専用です。したがって、更新(書き込みまたは削除)を明示的に示すには FOR UPDATE を使用する必要があります。
次の例では、Tuition テーブルの Degree、Residency、および Cost_Per_Credit 列から値を選択し、それらを 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;
|