Dieses Dokument behandelt folgende Themen:
Das SQL-Statement DELETE
dient dazu, Reihen aus einer
Tabelle zu löschen, ohne einen Cursor zu verwenden (Searched
DELETE
), oder Reihen aus einer Tabelle zu löschen, auf die der
Cursor zeigt (Positioned DELETE
).
Zwei unterschiedliche Strukturen sind möglich:
Searched DELETE
ist ein eigenständiges Statement, das
unabhängig von einem SELECT
-Statement verwendet werden
kann. Mit einem einzigen Statement können sie keine, eine, mehrere oder alle
Reihen einer Tabelle löschen. Welche Reihen gelöscht werden, bestimmen Sie mit
einer Suchbedingung (search-condition), die auf die
Tabelle angewandt wird. Außerdem ist es möglich, dem Tabellennamen einen
correlation-name zuzuweisen.
Anmerkung:
Die Anzahl der Reihen, die mit einem Searched DELETE
tatsächlich gelöscht wurden, kann mit der Systemvariablen
*ROWCOUNT
ermittelt werden.
Common Set-Syntax:
DELETE
FROM
table-name
[(correlation-name
)] [WHERE
search-condition]
|
Extended Set-Syntax:
DELETE
FROM
table-name
[(correlation-name
)] [WHERE
search-condition]
|
WITH |
RR |
[QUERYNO
integer]
|
||||
RS |
|||||||
CS
|
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Syntax-Element-Beschreibung:
FROM table-name |
FROM-Klausel:
In dieser Klausel wird die Tabelle angegeben, aus der die Reihen gelöscht werden sollen. |
---|---|
correlation-name |
Als Option kann dem Tabellen-Namen ein correlation-name zugewiesen werden. |
WHERE search-condition |
WHERE-Klausel:
Diese Klausel wird benutzt, um die Selektionskriterien für die zu löschenden Reihen anzugeben. Wenn keine |
WITH |
WITH Isolation Level-Klausel:
Diese Klausel gehört zum SQL Extended Set. Diese Klausel ermöglicht die explizite Angabe des beim Suchen der zu löschenden Reihe benutzten Isolation Level. Diese Klausel gilt nur für DB2-Datenbanken. Bei anderen Datenbanken verursacht sie einen Laufzeitfehler. |
QUERYNO integer |
QUERYNO-Klausel:
Diese Klausel gehört zum SQL Extended Set. Diese Klausel wir zurzeit nicht unterstützt und wird ignoriert. |
Ein Positioned DELETE
bezieht sich auf einen Cursor
innerhalb einer Datenbankschleife. Es muss daher dieselbe Tabelle referenzieren
wie das entsprechende SELECT
-Statement, sonst wird eine
Fehlermeldung ausgegeben. Ein Positioned DELETE
kann nur mit
cursor-orientierter Selektion verwendet werden.
In seiner Funktion entspricht Positioned DELETE
dem
gewöhnlichen Natural-Statement DELETE
.
DELETE FROM
table-name WHERE CURRENT OF
CURSOR [(r)]
|
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Syntax-Element-Beschreibung: