DELETE

#### Search Results

Search

# DELETE

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

Dieses Dokument behandelt folgende Themen:

- Funktion

- Einschränkung

- Syntax-Beschreibung

- Datenbank-spezifische Anmerkungen

- Beispiele

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Verwandte Statements: `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`

Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen

## Funktion

Das Statement `DELETE` dient dazu, einen Datensatz von der Datenbank zu löschen.

### Hold-Status

Das Vorhandensein eines `DELETE`-Statements bewirkt, dass alle Datensätze, die mit dem betreffenden `READ`- oder `FIND`-Statement gelesen werden, in den Hold-Status gestellt werden.

Die Hold-Logik ist im Kapitel Datenbankzugriffe im Leitfaden zur Programmierung beschrieben.

## Einschränkung

Das `DELETE`-Statement darf nicht mit einem `FIND`-, `READ`- oder `GET`-Statement in derselben Sourcecode-Zeile stehen.

## Syntax-Beschreibung

Syntax-Element-Beschreibung

Syntax-Element | Beschreibung
--- | ---
`(r)` | Statement-Referenz: Die Notation `(r)` dient dazu, das Statement zu referenzieren, das verwendet wurde, um den zu löschenden Datensatz auszuwählen/zu lesen. Wenn keine Statement-Referenz angegeben wird, referenziert das `DELETE`-Statement die jeweils innerste aktive Verarbeitungsschleife, mit der der Datensatz, der gelöscht werden soll, ausgewählt/gelesen wurde.

## Datenbank-spezifische Anmerkungen

VSAM-Datenbanken | Das `DELETE`-Statement ist nicht auf VSAM-ESDS (Entry-Sequenced Data Sets) anwendbar.
SQL-Datenbanken | Mit dem `DELETE`-Statement können Sie eine Reihe aus einer Datenbank-Tabelle löschen. Das `DELETE`-Statement entspricht dem SQL-Statement `DELETE WHERE CURRENT OF CURSOR-NAME`, d.h. nur die zuletzt gelesene Reihe kann gelöscht werden. Bei den meisten SQL-Datenbanken kann eine mit `FIND SORTED BY` oder `READ LOGICAL` gelesene Reihe nicht gelöscht werden.

## Beispiele

- Beispiel 1 — DELETE-Statement

- Beispiel 2 — DELETE-Statement

### Beispiel 1 — DELETE-Statement

In diesem Beispiel werden alle Datensätze mit Namen `ALDEN` gelöscht.

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

### Beispiel 2 — DELETE-Statement

Falls in der `VEHICLES`-Datei für die Person mit Namen `ALDEN` keine Datensätze gefunden werden, wird von der `EMPLOYEES`-Datei der Datensatz von `ALDEN` gelöscht.

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

### On this page

- Funktion
- Einschränkung
- Syntax-Beschreibung
- Datenbank-spezifische Anmerkungen
- Beispiele