SQL Engine Reference (v11)

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; 
666

次の例では、削除を実行するために 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') 
666
DECLARE cursor1 CURSOR 
  FOR SELECT Degree, Residency, Cost_Per_Credit 
  FROM Tuition ORDER BY ID  
  FOR UPDATE; 

関連項目

CREATE PROCEDURE

CREATE TRIGGER


DECLARE

DEFAULT