DECLARE cursor_name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR prepared_name DECLARE cursor_name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ] FOR query
DECLAREは、プリペアード・ステートメントの結果セット全体を繰り返し処理するカーソルを宣言します。 このコマンドは直接的なDECLARESQLコマンドとは多少異なる意味を持ちます。 こちらは問い合わせを実行し、取り出し用の結果セットの準備を行いますが、埋め込みSQLコマンドでは、問い合わせの結果セット全体を繰り返す"ループ変数"の名前を宣言するだけです。 実際の実行はOPENコマンドでカーソルが開いた時に起こります。
以下に問い合わせ用のカーソルを宣言する例を示します。
EXEC SQL DECLARE C CURSOR FOR SELECT * FROM My_Table; EXEC SQL DECLARE C CURSOR FOR SELECT Item1 FROM T; EXEC SQL DECLARE cur1 CURSOR FOR SELECT version();
プリペアード・ステートメント用のカーソルを宣言する例を示します。
EXEC SQL PREPARE stmt1 AS SELECT version(); EXEC SQL DECLARE cur1 CURSOR FOR stmt1;