
このコンテキストで 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 例