emp.empnum = 1; // sets the key in record emp try get emp forUpdate; onException myErrorHandler(8); // プログラムを終了する end emp.empname = emp.empname + " Smith"; try replace emp; onException myErrorHandler(12); end
replace 文の詳細は、レコード・タイプによって異なります。SQL 処理の詳細については、『SQL レコード』を参照してください。
replace 文は DL/I REPL 文を生成します。DL/I では、セグメントを上書きする前に、そのセグメントを取得、保持する必要があります。 EGL キーワードの get...forUpdate、get next...forUpdate、および get next inParent...forUpdate はすべて、置換が要求されたセグメントを保持します。
//レコードのインスタンスを作成する myCustomer CustomerRecord; myLocation LocationRecord; myOrder OrderRecord; //セグメント検索引数を作成する myCustomer.customerNo = "5001"; myLocation.locationNo = "22"; myOrder.orderDateNo = "20050730A003"; //要求されたオーダー・セグメントを保持する try get myOrder forUpdate; onException myErrorHandler(2); end //情報を更新する changeOrder(myOrder); //オーダーを再書き込みする try replace myOrder; onException myErrorHandler(8); end
forUpdate オプションに関する詳細については、『get』を参照してください。
SQL 処理の場合、EGL replace 文は、 生成されたコードでは SQL UPDATE 文になります。
UPDATE tableName
SET column01 = :recordItem01,
column02 = :recordItem02,
.
.
.
columnNN = :recordItemNN WHERE CURRENT OF cursor
関連タスク
EGL 文およびコマンドの構文図