リファレンスガイド> TDV SQLスクリプト> SQLスクリプトステートメントリファレンス> DECLARE <cursorName> CURSOR FOR
 
DECLARE <cursorName> CURSOR FOR
SQLスクリプトで静的カーソルを定義するには、静的カーソルに一意の名前を付け、カーソルに関連付けられたクエリ式を指定します。
構文
DECLARE <cursorName> CURSOR FOR <queryExpression>
備考
名前解決は、スタンドアロンのSELECTステートメントのように機能します。
変数をクエリ式で使用することはできません。
バインド変数(「?」など)は使用できません。
静的カーソルを宣言することは、JDBCでステートメントを準備することと論理的に同等です。
このように宣言されたカーソルは定数のようなもので、値を変更することはできません。
PROCEDURE p (OUT p_name VARCHAR)
BEGIN
  DECLARE c CURSOR FOR SELECT name FROM /shared/T;
  OPEN c;
  FETCH c INTO p_name;
  CLOSE c;
END
 
以下の手順では、名が返されます。
PROCEDURE p (OUT p_name VARCHAR)
BEGIN
  DECLARE c CURSOR FOR SELECT name FROM /shared/T;
  OPEN c;
  FETCH c INTO p_name;
  CLOSE c;
...
  --Reopen cursor
  OPEN c;
  FETCH c INTO p_name;
  CLOSE c;
END
 
以下の手順では、cとdの2つのカーソルを操作します。
PROCEDURE p
BEGIN
  DECLARE c CURSOR (name VARCHAR);
  DECLARE d CURSOR FOR SELECT name FROM /shared/T;
 
  --Open a new cursor in cursor variable c
  OPEN c FOR SELECT name FROM /shared/T;
 
  Assign the cursor referred to by d to c
  The original cursor referred to by c is no longer accessible
  SET c = d;
 
  --c and d cursor variables now refer to the same cursor
  --Use either one to open the cursor
  OPEN d; -- or OPEN c
  --c.ISOPEN is true
 
以下の手順では、開いた静的カーソルを返します。
PROCEDURE p (OUT p_cursor CURSOR (name VARCHAR))
BEGIN
  DECLARE c CURSOR FOR SELECT name FROM /shared/T;
 
  SET p_cursor = c;
  OPEN p_cursor;
END
 
--Returns an opened static cursor
PROCEDURE p (OUT p_cursor CURSOR (name VARCHAR))
BEGIN
  OPEN p_cursor FOR SELECT name FROM /shared/T;
END
 
 
PROCEDURE p (OUT p_id INTEGER, OUT p_name VARCHAR)
BEGIN
  DECLARE c CURSOR FOR SELECT id, name FROM /shared/T;
  DECLARE r ROW (id INTEGER, name VARCHAR);
 
  OPEN c;
  FETCH INTO c;
  CLOSE c;
 
  SET p_id = r.id;
  SET p_name = r.name;
END
 
PROCEDURE p ( )
BEGIN
  DECLARE TYPE r_type ROW (id INTEGER, name VARCHAR);
  DECLARE c CURSOR r_type;
  DECLARE r r_type;
 
  OPEN c FOR SELECT id, name FROM /shared/T;
  FETCH INTO c;
  CLOSE c;
END