In den meisten Fällen gibt die EGL-Laufzeit nach der letzten Iteration der Schleife eine implizite SQL-Anweisung CLOSE aus. Da diese implizite Anweisung die SQL-Systemvariablen ändert, müssen Sie die Werte der SQL-Systemvariablen im Hauptteil der Anweisung 'forEach' speichern.
Die EGL-Laufzeit führt die SQL-Anweisung CLOSE nicht aus, wenn die Anweisung 'forEach' aufgrund eines anderen Fehlers als 'noRecordFound' (kein Datensatz gefunden) beendet wird.

Durch das Erstellen einer INTO-Klausel in diesem Kontext werden alle INTO-Klauseln aus der zugehörigen Anweisung 'open' außer Kraft gesetzt.
vgVar.handleHardIOErrors = 1;
try
open myResults for myCustomer
with #sql{
SELECT customer_number, customer_name
FROM Customer
WHERE customer_number >= :myCustomer.customerNumber
FOR UPDATE OF customer_name
}
into myCustomer.customerNumber, myCustomer.customerName;
onException(sqlEx SQLException)
meinFehlerHandler(6); // beendet das Programm
end
try
forEach (from myResults)
// Nachname kommt zuerst
reverseName(myCustomer.customerName);
try
execute
#sql{
UPDATE Customer
SET customer_name = :myCustomer.customerName
WHERE CURRENT OF myResults
};
onException(sqlEx SQLException)
meinFehlerHandler(10); // beendet das Programm
end
end
onException(sqlEx SQLException)
meinFehlerHandler(8); // beendet das Programm
end
sysLib.commit();
onException(sqlEx SQLException)
if (sqlcode != 100) // unnötiger Test