以下に例を示します。
if (userRequest == "D") try get myRecord forUpdate; onException myErrorHandler(12); // プログラムを終了 end try delete myRecord; onException myErrorHandler(16); end end
delete の振る舞いは、レコード・タイプによって異なります。DL/I 処理の詳細については、『DLISegment レコード』を参照してください。 SQL 処理については、『SQL レコード』を参照してください。
delete 文は DL/I DLET 文を生成します。DL/I では、セグメントを削除する前に、そのセグメントを取得、保持する必要があります。 EGL キーワードの get...forUpdate、get next...forUpdate、および get next inParent...forUpdate はすべて、要求されたセグメントを削除するために保持します。
//レコードのインスタンスを作成する myCustomer CustomerRecord; myLocation LocationRecord; myOrder OrderRecord; //セグメント検索引数を作成する myCustomer.customerNo = "005001"; myLocation.locationNo = "000022"; myOrder.orderDateNo = "20050730A003"; //要求されたオーダー・レコードを保持する try get myOrder forUpdate; onException myErrorHandler(2); end //オーダーを削除する try delete myOrder; onException myErrorHandler(7); endget...forUpdate 文は、顧客、ロケーション、およびオーダーに関して修飾された SSA を生成します。
GHU STSCCST (STQCCNO = :myCust.customerNo) STSCLOC (STQCLNO = :myLocation.locationNo) STPCORD (STQCODN = :myOrder.orderDateNo)delete 文は次に、単純に次の文を生成します。
DLET STPCORD
forUpdate オプションに関する詳細については、『get』を参照してください。
DELETE FROM tableName
WHERE CURRENT OF cursor
ユーザー独自の SQL DELETE 文を作成するには、EGL execute 文を使用します。
単一の EGL delete 文を使用して、 複数の SQL テーブルから行を除去することはできません。