バージョン 4.2.5
 —  ステートメント  —

DELETE

DELETE [RECORD] [IN] [STATEMENT] [(r)]

このドキュメントでは、次のトピックについて説明します。

構文図で使用されている記号については、「構文記号」を参照してください。

関連ステートメント:ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BACKOUT TRANSACTION | BEFORE BREAK PROCESSING | END TRANSACTION | FIND | GET | GET SAME | GET TRANSACTION DATA | HISTOGRAM | LIMIT | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE | UPDATE

関連機能グループ:「データベースへのアクセスと更新


機能

DELETE ステートメントは、データベースからレコードを削除するために使用します。

ホールド状態

DELETE ステートメントを使用すると、対応する FINDREAD ステートメントで選択した各レコードはホールド状態に置かれます。

レコードのホールドロジックの詳細については、『プログラミングガイド』の「データベース更新 - トランザクション処理」セクションを参照してください。

Top of page

制限事項

DELETE ステートメントは、FINDREAD、または GET ステートメントと同じ行に指定することはできません。

Top of page

構文説明

(r)
ステートメント参照:

表記 (r) を指定して、削除するレコードの選択と読み取りに使用されたステートメントを参照します。

(r) を指定しなかった場合、DELETE ステートメントは、データベースレコードが選択されて読み込まれた最も内側でアクティブになっている処理ループを参照します。

Top of page

データベース固有の考慮事項

DL/I データベース

DELETE ステートメントは、DL/I データベースからセグメントを削除するために使用します。そのセグメントに従属するすべてのものが削除されます。

GSAM 制限により、UPDATE ステートメントは GSAM データベースには使用できません。

VSAM データベース DELETE ステートメントは、VSAM エントリ順データセット(ESDS)に対しては使用できません。
SQL データベース

DELETE ステートメントは、データベーステーブルから 1 つの行を削除するために使用します。 これは、SQL ステートメントの DELETE WHERE CURRENT OF CURSOR-NAME に対応するものです。つまり、最後に読み取られた行のみを削除できます。

ほとんどの SQL データベースでは、FIND SORTED BY または READ LOGICAL ステートメントで読み取られた行は削除できません。

Top of page

例 1

この例では、ALDEN を含むレコードがすべて削除されます。

** Example 'DELEX1': DELETE                                             
**                                                                      
** 
CAUTION: Executing this example will modify the database records!  
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 NAME                                                                
END-DEFINE                                                              
*                                                                       
FIND EMPLOY-VIEW WITH NAME = 'ALDEN'                                    
  /*                                                                    
  DELETE                                                                
  END TRANSACTION                                                   
  /*                                                                    
  AT END OF DATA                                                        
    WRITE NOTITLE *NUMBER 'RECORDS DELETED'                             
  END-ENDDATA                                                           
END-FIND                                                                
END                                                                    

例 2

VEHICLES ファイルで ALDEN という名前の人物が見つからない場合は、ALDEN の EMPLOYEE レコードが削除されます。

** Example 'DELEX2': DELETE                                             
**                                                                      
** 
CAUTION: Executing this example will modify the database records! 
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 PERSONNEL-ID                                                        
  2 NAME                                                                
1 VEHIC-VIEW VIEW OF VEHICLES                                           
  2 PERSONNEL-ID                                                        
END-DEFINE                                                              
*                                                                       
EMPL. FIND EMPLOY-VIEW WITH NAME = 'ALDEN'                              
  /*                                                                    
 VEHC. FIND VEHIC-VIEW WITH PERSONNEL-ID = PERSONNEL-ID (EMPL.)        
    IF NO RECORDS FOUND                                                 
      /*                                                                
      DELETE (EMPL.)                                                    
      /*                                                                
      END TRANSACTION
    END-NOREC        
  END-FIND        
  /*                 
END-FIND             
END

Top of page