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