このコンテキストで INTO 文節を指定すると、関連する open 文で示されている INTO 文節はオーバーライドされます。
ほとんどの場合、EGL ランタイムは forEach 文の最後の反復の後に実行される close 文を暗黙に発行します。その暗黙のステートメントは、SQL システム変数を変更します。その理由は、ユーザーが SQL 関連システム変数の値を forEach ステートメントの本体内に保管したい場合があるからです。
EGL ランタイムは、forEach 文が noRecordFound 以外のエラーのために終了した場合には、暗黙の close 文を発行しません。
VGVar.handleHardIOErrors = 1; try open selectEmp with #sql{ select empnum, empname from employee where empnum >= :empnum for update of empname } into empnum, empname; onException myErrorHandler(6); // プログラムを終了する end try forEach (from selectEmp) empname = empname + " " + "III"; try execute #sql{ update employee set empname = :empname where current of selectEmp }; onException myErrorHandler(10); // プログラムを終了する end end // end forEach 結果セットの最後の行が読み取られると // カーソルは自動的にクローズされる onException // 条件が "sqlcode = 100" の場合、forEach に関連した例外ブロックは実行されないので // "if (sqlcode != 100)" のテストは避ける。 myErrorHandler(8); // プログラムを終了する end sysLib.commit();
関連する概念
resultSetID
SQL サポート
関連するタスク
EGL ステートメントおよびコマンドの構文図
関連する参照項目
EGL ステートメント
exit
open
SQL 例