>>--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 指令についての詳細は、データベースアクセス マニュアル中の Open ESQL の項を参照してください。
注:
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