SQL のコンテキストで delete 文を使用する場合、この文はデータベースから行を除去します。 forUpdate オプションを指定した get 文または open 文を使用して、レコードをあらかじめ取り出しておく必要があります。
DELETE FROM tableName
WHERE CURRENT OF cursor
#sql ディレクティブを使用してこの文を再書き込みするオプションはありません。
カスタム SQL DELETE 文を作成するには、EGL execute 文を使用します。単一の EGL delete 文を使用して、 複数の SQL テーブルから行を除去することはできません。

以下に、SQL の delete 文の例を示します。
try
get dept forUpdate;
dept.description = "Test Engineers";
delete dept;
commit();
onException(sqlEx SQLException)
sqlFailure();
end
次の例は、複数行に対する delete ステートメントを示しています。
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]; //this deletes the second row in the row set using
//“WHERE CURRENT OF CS1”
i int = 2;
Delete employees[i]; //the index could be a variable
Delete employees; //this deletes the whole row set from current cursor
| プラットフォーム | 問題 |
|---|---|
| COBOL 生成 | COBOL のパフォーマンスを最適にするために、delete ステートメントには常に from resultSet 文節を組み込んでください。 |
| SQL Server | 複数行の delete last と get last を同時に使用することはできません。両方のステートメントを一度に実行すると、結果セットは閉じられます。 |
| DB2® for i5/OS™ | ジャーナル処理を使用可能にするか、接続ストリングに transation isolation=none を追加する必要があります。 |