カーソルの使用によって最後にフェッチされた行を削除します。
               
            
 
            	 
            
               構文:
 
               		 
               		>>---EXEC SQL---.------------.--->
                +-AT db_name-+
 >--DELETE---FROM---table_name--->
 >--WHERE CURRENT OF--cursor_name---END-EXEC--->< 
               	   
            	 
            
               パラメーター:
 
               		 
               		
                
                  		
                  
                      
                        			  
                        			  
                        			 
                         
                           				
                           
                              				  
                              | AT db_name | 
                              				  
                              DECLARE DATABASE を使用して宣言されたデータベースの名前。この句は必須ではありません。省略すると、DECLARE CURSOR 文に関連付けられている接続に自動的に切り替わります (その接続が現在の接続とは異なる場合。DECLARE
                                    CURSOR 文の実行中のみ有効)。 | 
                              				
                           
                           				
                            
                              				  
                              | table_name |  
                              				  
                              SELECT FROM オプションで使用するものと同じテーブル名 (「DECLARE CURSOR」を参照)。 |  
                              				
                           
 
                           				
                            
                              				  
                              | cursor_name |  
                              				  
                              事前に、宣言、オープン、および取得済みのカーソル。 |  
                              				
                           
 
                           			 
                         
                        		  
                     
                    
                  		
                 
               	 
              
            	 
             
            	 
            
               例:
 
               		 
               		* Declare a cursor for update
     EXEC SQL DECLARE C1 CURSOR FOR
        SELECT staff_id, last_name FROM staff FOR UPDATE
     END-EXEC
     IF SQLCODE NOT = ZERO
        DISPLAY 'Error: Could not declare cursor for update.'
        DISPLAY SQLERRMC
        DISPLAY SQLERRML
        EXEC SQL DISCONNECT ALL END-EXEC
        STOP RUN
     END-IF
* Open the cursor
     EXEC SQL
        OPEN C1 
     END-EXEC
     IF SQLCODE NOT = ZERO
        DISPLAY 'Error: Could not open cursor for update.'
        DISPLAY SQLERRMC
        DISPLAY SQLERRML
        EXEC SQL DISCONNECT ALL END-EXEC
        STOP RUN
     END-IF
* Display staff member's details and give user the opportunity
* to delete particular members. 
     PERFORM UNTIL SQLCODE NOT = ZERO
        EXEC SQL FETCH C1 INTO :staff-id,:last-name END-EXEC
        IF SQLCODE = ZERO
           DISPLAY 'Staff ID:     ' staff-id
           DISPLAY 'Last name:    ' last-name
           DISPLAY 'Delete <y/n>? ' WITH NO ADVANCING
           ACCEPT usr-input
           IF usr-input = 'y'
              EXEC SQL
                 DELETE FROM staff WHERE CURRENT OF C1
              END-EXEC
              IF SQLCODE NOT = ZERO
                 DISPLAY 'Error: Could not delete record.'
                 DISPLAY SQLERRMC
                 DISPLAY SQLERRML
              END-IF
           END-IF
        END-IF
     END-PERFORM 
               	   
            
           
         
         
説明:
ODBC は位置指定削除をサポートします。位置指定削除は、拡張構文でカーソルを使って最後にフェッチされた行を削除します (ODBC 1.0 では主要構文で更新されていましたが、ODBC 2.0では拡張構文に移行しました)。すべてのドライバーが位置指定削除をサポートしているわけではありません。ただし、OpenESQL では、位置指定更新および位置指定削除が容易にできるように、ODBC カーソル名を COBOL カーソル名と同じ名前に設定します。
ODBC ドライバーによっては、カーソルで使用する SELECT 文に、位置指定削除を可能にする FOR UPDATE 句を指定する必要があります。
位置指定削除ではホスト配列を使用できません。
標準 SQL 文で使用する別の形式の DELETE は、検索削除と呼ばれます。
ほとんどのデータ ソースでは、SCROLLOPTION および CONCURRENCY の特定の組み合わせを、SET 文または DECLARE CURSOR 文で指定する必要があります。
ODBC カーソルのライブラリには、位置指定削除の制限付き実装が用意されています。これを有効にするには、SQL(USECURLIB=YES) でコンパイルし、SCROLLOPTION STATIC および CONCURRENCY OPTCCVAL (または OPTIMISTIC) を使用します。