Wenn Sie die Anweisung 'delete' im Kontext von SQL verwenden, entfernt diese Anweisung eine Zeile aus einer Datenbank. Sie müssen den Datensatz zuvor mithilfe einer Anweisung 'get' oder 'open' mit der Option 'forUpdate' abgerufen haben.
DELETE FROM Tabellenname
WHERE CURRENT OF Cursor
Sie haben nicht die Möglichkeit, diese Anweisung mithilfe der Direktive
'#sql' neu zu schreiben. Verwenden Sie die EGL-Anweisung 'execute', um eine angepasste SQL-Anweisung DELETE
zu schreiben.Eine einzelne EGL-Anweisung 'delete' kann nicht zum Entfernen von Zeilen aus mehreren SQL-Tabellen verwendet werden.

Das folgende Beispiel zeigt die Anweisung 'delete' für SQL:
try
get dept forUpdate;
dept.description = "Test Engineers";
delete dept;
commit();
onException(sqlEx SQLException)
sqlFailure();
end
Das folgende Beispiel zeigt die Anweisung 'delete' für eine Multiple-Row-Operation:
employees Employee[0]{rowsetsize=10};
Open resultset1 forUpdate with #sql{
select eID, uName, PASSWORD, fName, lName, office, sex, EMail
from EMPLOYEETEST
} for employees;
Get Next employees;
Delete employees[2]; //Hierduch wird die zweite Zeile in der Zeilengruppe mit
//“WHERE CURRENT OF CS1” gelöscht.
i int = 2;
Delete employees[i]; //Der Index könnte eine Variable sein.
Delete employees; //Hierdurch wird die gesamte Zeilengruppe des aktuellen Cursors gelöscht.
| Plattform | Problem |
|---|---|
| COBOL-Generierung | In COBOL wird die beste Leistung erzielt, wenn stets die Klausel 'from Ergebnismenge' in die Anweisung 'delete' eingeschlossen wird. |
| SQL Server | Die Anweisungen 'delete last' und 'get last' für Multiple-Row-Funktionen können nicht zusammen verwendet werden. Die Ergebnismenge wird geschlossen, wenn beide Anweisungen einmal ausgeführt werden. |
| DB2 for i5/OS | Die Journalfunktion muss aktiviert sein, oder 'transaction isolation=none' muss der Verbindungszeichenfolge hinzugefügt werden. |