対応する DECLARE CURSOR 文で指定した SELECT 文を実行し、FETCH 文が一度に 1 行ずつアクセスする結果セットを生成します。 
               
            
 
            
            
               構文:
 
                
               >>--EXEC SQL---OPEN---cursor_name------------------------>
 >----.--------------------------------.----END-EXEC-----><
      +-USING DESCRIPTOR :sqlda_struct-+
      |       +- , -+                  |
      |       V     |                  |
      +-USING :hvar--------------------+      
                 
            
            
               パラメーター:
 
                
               
                
                  
                  
                      
                         
                         
                        
                         
                           
                            
                              
                              | cursor_name |  
                              
                              事前に宣言済みのカーソル。 |  
                              
                           
 
                           
                            
                              
                              | :sqlda_struct |  
                              
                              アプリケーションによって事前に構築された SQLDA データ構造。SQLDA データ構造には、各入力パラメーターのアドレス、データ型、および長さが含まれます。このオプションは、DECLARE 文で準備済みの SQL 文を参照するカーソルと併用する場合にのみ使用します。コロンを使用すると、他の埋め込み
                                 SQL 実装との互換性を確保できます。
                               |  
                              
                           
 
                           
                            
                              
                              | :hvar |  
                              
                              SELECT 文のパラメーター マーカーに対応する 1 つ以上の入力ホスト変数。このオプションは、DECLARE 文で準備済みの SQL 文を参照するカーソルと併用する場合にのみ使用します。 |  
                              
                           
 
                           
                         
                        
                     
                    
                  
                 
               
              
            
             
            
            
               例:
 
                
               *Declare the cursor...
     EXEC SQL
     DECLARE C1 CURSOR FOR
        SELECT staff_id, last_name
        FROM staff
     END-EXEC
     IF SQLCODE NOT = ZERO
        DISPLAY 'Error: Could not declare cursor.'
        DISPLAY SQLERRMC
        DISPLAY SQLERRML
        EXEC SQL DISCONNECT ALL END-EXEC
        STOP RUN
     END-IF
     EXEC SQL
        OPEN C1
     END-EXEC
     IF SQLCODE NOT = ZERO
        DISPLAY 'Error: Could not open cursor.'
        DISPLAY SQLERRMC    
        DISPLAY SQLERRML
        EXEC SQL DISCONNECT CURRENT END-EXEC
        STOP RUN
     END-IF
     PERFORM UNTIL sqlcode NOT = ZERO
*SQLCODE will be zero as long as it has successfully fetched data
        EXEC SQL
           FETCH C1 INTO :staff-staff-id, :staff-last-name
        END-EXEC
        IF SQLCODE = ZERO
          DISPLAY "Staff ID: " staff-staff-id
           DISPLAY "Staff member's last name: " staff-last-name
        END-IF
     END-PERFORM
     EXEC SQL
        CLOSE C1
     END-EXEC
     IF SQLCODE NOT = ZERO
        DISPLAY 'Error: Could not close cursor.'
        DISPLAY SQLERRMC
        DISPLAY SQLERRML
     END-IF 
                 
            
            
           
         
         
説明:
カーソルを静的な (準備されていない) SELECT 文で宣言する場合、SELECT 文にはホスト変数を含められますが、パラメーター マーカーを含めることはできません。ホスト変数の現在の値が OPEN 文の実行時に置き換えられます。静的に宣言されたカーソルについては、OPEN 文に USING :hvar または USING DESCRIPTOR :sqlda_struct オプションを含めることはできません。
カーソルを動的な (準備済みの) SELECT 文で宣言する場合、SELECT 文にはパラメーター マーカーを含められますが、ホスト変数を含めることはできません。パラメーター マーカーは、SELECT 文で列の値を使用できる任意の場所に記述できます。SELECT 文にパラメーター マーカーがある場合は、OPEN 文に、ホスト変数と同数の USING :hvar オプション、またはアプリケーションによってデータを書き込み済みの SQLDA データ構造を示す USING DESCRIPTOR :sqlda_struct オプションのどちらかを含める必要があります。
USING DESCRIPTOR :sqlda_struct オプションでは、プログラム変数の値は SELECT 文のパラメーター マーカーに置き換えられます。これらのプログラム変数は、SQLDA データ構造内の対応する SQLDATA 項目によってアドレス指定されます。
SELECT 文のパラメーター マーカーの数は、sqldata 項目 (USING DESCRIPTOR :sqlda_struct) または OPEN 文のホスト変数 (USING :hvar) の数と一致している必要があります。