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