DECLARE CURSOR

構文
>>--EXEC SQL---.------------.------DECLARE cursor_name------>
               +-AT db_name-+

 >--.-------------.-----.---------.------.--------------.--->
    +-SENSITIVE---+     +-FORWARD-+      +-LOCK---------+
    +-INSENSITIVE-+     +-KEYSET--+      +-LOCKCC-------+
                        +-DYNAMIC-+      +-OPTIMISTIC---+
                        +-STATIC--+      +-OPTCC--------+
                        +-SCROLL--+      +-OPTCCVAL-----+
                                         +-READ ONLY----+
                                         +-READONLY-----+
                                         +-FASTFORWARD--+
                                         +-FAST FORWARD-+

 >--CURSOR-------.----------------.---------FOR------------->
                 +----WITH HOLD---+        

 >----.----select_stmt-----------------------.-------------->
      +----stored_procedure_call_statement---+
      +----prepared_stmt_name----------------+
      +----OPTIMIZE FOR n ROWS---------------+
 >--.-------------------------------.----------------------->
    +-FOR READ ONLY-----------------+
    +-FOR UPDATE-.----------------.-+
                 +-OF column_list-+
 >------END-EXEC--------><
パラメタ
db_name DECLARE DATABASE を使用して宣言されているデータベースの名前を指定します。
cursor_name 以後の文でカーソルを示すためのカーソル名を指定します。カーソル名には、有効な任意のファイル名の文字を入れることができます。カーソル名は最大 30 字で、最初の文字は数字以外の文字にする必要があります。
select_stmt 任意の有効な SQL SELECT文、あるいは結果セットを返すストアドプロシージャの QUERY ODBC 文または CALL 文を指定します。
prepared_stmt_name 準備された SQL SELECT 文または QUERY ODBC 文の名前を指定します。
stored_procedure_call_stmt 結果セットを返す有効なストアドプロシージャを指定します。
n カーソルオープン時に、1ブロックにつき FETCHされる行数。 1000 以下の整数で指定します。
column_list コンマで区切られた列名のリストを指定します。
目的

DECLARE CURSOR 文により、指定された SELECT 文がカーソル名に関連付けられ、 FETCH 文を使用したデータ行を検索できます。

2 つの別々のコンパイルしたプログラムが同じカーソル名を共有することはできません。 特定のカーソル名を参照する文は、すべて同時にコンパイルする必要があります。

DECLARE CURSOR 文は、最初のカーソル参照よりも前にする必要があります。SELECT 文は、 カーソルが開いたときに実行されます。SELECT 文には次の規則が適用されます。

OPTIMIZE FOR 句が書かれていると、OpenESQL は PREFETCH指令の設定より優先して、 該当するカーソルのFETCH行数として n を使用します。 これによってプリフェッチの最適化を個々のカーソルに対して設定することができます。 PREFETCH 指令についての詳細は、データベースアクセス マニュアル中の PREFETCH の項を参照してください。


注:


例:
EXEC SQL DECLARE C1 CURSOR FOR
   SELECT last_name, first_name FROM staff
END-EXEC

EXEC SQL DECLARE C2 CURSOR FOR
   QUERY ODBC COLUMNS TABLENAME 'staff'
END-EXEC
他参照:

関連項目