>>--EXEC SQL---.------------.------DECLARE cursor_name------>
+-AT db_name-+
>--.-------------.-----.---------.------.--------------.--->
+-SENSITIVE---+ +-FORWARD-+ +-LOCK---------+
+-INSENSITIVE-+ +-KEYSET--+ +-LOCKCC-------+
+-DYNAMIC-+ +-OPTIMISTIC---+
+-STATIC--+ +-OPTCC--------+
+-SCROLL--+ +-OPTCCVAL-----+
+-DATASET-+ +-READ ONLY----+
+-READONLY-----+
+-FASTFORWARD--+
+-FAST FORWARD-+
>--CURSOR-------.----------------.---------FOR------------->
+----WITH HOLD---+
+----WITH RETURN-.----------.-|
+TO CALLER-+
+-- ; ---------------------------------+
V |
>----.----select_stmt-----------------------.-------------->
+----stored_procedure_call_statement---+
+----prepared_stmt_name----------------+
+----OPTIMIZE FOR n ROWS---------------+
>--.-------------------------------.----------------------->
+-FOR READ ONLY-----------------+
+-FOR UPDATE-.----------------.-+
+-OF column_list-+
>------END-EXEC--------><
>>--EXEC SQL---.------------.------DECLARE cursor_name------> +-AT db_name-+ >--CURSOR FOR---result-set-generating-dml-statement--------> >------END-EXEC--------><
AT db_name | DECLARE DATABASE を使用して宣言されたデータベースの名前。
注: DECLARE CURSOR で AT db_name を使用する必要がある場合、カーソルを参照する後続の文の接続が現在の接続と異なっていると、カーソルに関連付けられている接続に自動的に切り替わります。これは、この文の実行中のみ有効です。
|
cursor_name | 後続の文でカーソルを識別するために使用するカーソル名。カーソル名には、ファイル名として使用できる文字を 30 字まで含められます。最初の文字は英字とします。 |
select_stmt | 任意の有効な SQL SELECT 文、または結果セットを返すストアド プロシージャの QUERY ODBC 文か CALL 文。 |
prepared_stmt_name | 準備された SQL SELECT 文または QUERY ODBC 文の名前。 |
stored_procedure_call_stmt | 結果セットを返す有効なストアド プロシージャ呼び出し。 |
n | カーソルが開いたときにフェッチされるブロックごとの行数。n の値は 1000 未満でなければなりません。 |
column_list | カンマで区切られた列名のリスト。 |
result-set-generating-dml-statement | OUTPUT 句を含む SQL Server INSERT、位置決めされていない UPDATE、または DELETE 文。 |
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
説明:
別々にコンパイルされた 2 つのプログラムでは、同じカーソルを共有できません。特定のカーソルを参照する文はすべて、まとめてコンパイルする必要があります。
DECLARE CURSOR 文は、最初のカーソル参照よりも前にする必要があります。SELECT 文は、カーソルが開いたときに実行されます。SELECT 文には次の規則が適用されます。
OPTIMIZE FOR を指定すると、カーソルの PREFETCH 指令の設定が n を使用してオーバーライドされます。これにより、個々のカーソルで事前取り込みを最適化できます。