Im Kontext von SQL wird die EGL-Anweisung 'execute' üblicherweise verwendet, um eine vorbereitete SQL-Anweisung mit dynamischen Elementen auszuführen.
Mit dieser Anweisung können Sie auch implizite Lösch-, Einfüge- oder Aktualisierungsabfragen erstellen oder eingebettete SQL-Anweisungen aus einer beschränkten Liste verfügbarer Befehle schreiben.

onException (sqlEx SQLException)
if (myCustomer is unique)
myErrorHandler(8);
end
end
WHERE CURRENT OF Ergebnismengen-ID
Zwischen '#sql' und der linken geschweiften Klammer darf kein Leerzeichen stehen.
Sie können impliziten SQL-Code mithilfe der Anweisung 'execute' generieren, um bestimmte Datenbankoperationen auszuführen, ohne zunächst eine EGL-Anweisung 'open' oder 'get' ausgeben zu müssen. EGL verdeckt normalerweise die Details des SQL-Datenbankzugriffs wie beispielsweise die Bearbeitung von Zeilenpositionen in der Ergebnismenge. Mithilfe der Anweisung 'execute' können Sie direkt die Datenbankzeilen angeben, die Sie ändern wollen, indem Sie die Eigenschaft 'defaultSelectCondition' des SQL-Datensatzabschnitts setzen.
execute delete myCustomer;
Bei der Verwendung dieser impliziten SQL-Befehle ist Vorsicht geboten, da keine Sicherheitseinrichtungen vorhanden sind.
Die implizite SQL-Anweisung DELETE legt anhand der SQL-Datensatzeigenschaft 'defaultSelectCondition' die Tabellenzeilen fest, die gelöscht werden sollen, wenn der Wert in den Schlüsselspalten der SQL-Tabelle jeweils mit dem Wert in dem entsprechenden Schlüsselfeld der SQL-Datensatzvariablen identisch ist. Wenn Sie keinen Datensatzschlüssel bzw. keine Standardauswahlbedingung angeben, werden alle Tabellenzeilen gelöscht.
DELETE FROM Tabellenname
WHERE [ Standardauswahlbedingung AND ]
Schlüsselspalte01 = :Schlüsselfeld01 [ AND
...
SchlüsselspalteNN = :SchlüsselfeldNN ]
Sie können mit einer einzelnen EGL-Anweisung nicht Zeilen aus mehreren Datenbanktabellen löschen.
INSERT INTO Tabellenname
(Spalte01, ... SpalteNN)
values (:Datensatzfeld01, ... :DatensatzfeldNN)
UPDATE Tabellenname
SET Spalte01 = :Datensatzfeld01,
Spalte02 = :Datensatzfeld02, ...
SpalteNN = :DatensatzfeldNN
WHERE Schlüsselspalte01 = :Schlüsselfeld01 [ AND
...
SchlüsselspalteNN = :SchlüsselfeldNN ]
execute #sql{
DELETE FROM Customer
WHERE last_order_date < :targetDate
};
Die EGL-Variable targetDate wird im SQL-Code zu einer Hostvariablen (mit vorangestelltem Doppelpunkt). Weitere Informationen finden Sie unter Hostvariablen.
Anhand einer vergleichbaren Syntax können Sie auch SQL-Anweisungen vom Typ INSERT oder UPDATE einbetten.
Sie können die EGL-Anweisung 'execute' nicht verwenden, um eine SQL-Anweisung einzubetten, die eine Ergebnismenge zurückgibt. Dies liegt daran, dass Sie den Cursor nicht direkt steuern können. EGL verarbeitet alle Cursordefinitionen und das Cursor-Management intern.
execute #sql{
create table Customer (
customer_number int not null,
customer_name char(40) not null,
customer_balance decimal(9,2) not null)
};
execute update for myCustomer;
execute #sql{
call aStoredProcedure( :parameterVar)
};
execute myPreparedStatement;
Zur Deklarationszeit tritt ein Fehler auf, wenn Sie einen Aufruf für eine implizite Lösch-, Einfüge- oder Aktualisierungsabfrage ausgeben, aber keine SQL-Datensatzvariable angeben.
Ein Fehler tritt in den impliziten Einfüge- bzw. Aktualisierungsabfragen auf, wenn die einzigen verfügbaren Hostvariablen schreibgeschützt sind.