Vorbereitete Anweisung (prepare) ausführen
Das Schlüsselwort prepare erstellt eine SQL-Anweisung aus einer Zeichenfolge. Diese vorbereitete Anweisung kann daraufhin mit einer anderen Datenzugriffsanweisung ausgeführt werden.
Wenn Sie anstelle von explizitem SQL-Code vorbereitete Anweisungen verwenden, kann die Leistung für wiederholt verwendete Datenzugriffsoperationen verbessert werden. Bei der Erstellung einer vorbereiteten Anweisung führt die Datenbank einen Großteil der erforderlichen Verarbeitungsschritte vorzeitig aus, sodass die Ausführung der vorbereiteten Anweisung weniger Verarbeitungsaufwand erfordert. Ob Sie eine vorbereitete Anweisung oder expliziten SQL-Code verwenden, hängt von der Häufigkeit der Verwendung der Datenzugriffsoperation ab.
function executeExplicitSQL()
myCustomers myCustomers[0];
get myCustomers with #sql{
SELECT CUSTOMER_ID, LAST_NAME
FROM MYSCHEMA.MYTABLE
};
end
function executePreparedStatement()
myCustomers myCustomers[0];
prepare myStatement from
"SELECT CUSTOMER_ID, LAST_NAME FROM MYSCHEMA.MYTABLE";
get myCustomers with myStatement;
end
In den obigen Beispielen wird die Anweisung get zur Ausführung der vorbereiteten Anweisung verwendet; execute oder open können jedoch ebenfalls verwendet werden. In jedem Fall muss die vorbereitete Anweisung für die Datenzugriffsanweisung geeignet sein. Wenn es also möglich ist, die Zeichenfolge als expliziten SQL-Code auszuführen, können Sie die Zeichenfolge auch als vorbereitete Anweisung vorbereiten und ausführen. prepare kann für SQL-Standardanweisungen wie SELECT, für dynamische SQL-Anweisungen mit Variablen sowie für Aufrufe an gespeicherte Prozeduren verwendet werden.
Anweisung vorbereiten und ausführen
myString string = "SELECT ";
myString += "CUSTOMER_ID, LAST_NAME ";
myString += "FROM MYSCHEMA.MYTABLE";
Dann können Sie die vorbereitete Anweisung mithilfe von prepare aus der Variablen erstellen, wobei Sie die Anweisung einer neuen ID zuweisen:
prepare myStatement from myString;
myCustomer myCustomers;
prepare myStatement2 from myString for myCustomer;
myCustomerArray myCustomers[];
get myCustomerArray with myStatement2;
Variablen in der vorbereiteten Anweisung verwenden
Vorbereitete Anweisungen sind besonders nützlich, wenn Sie Variablen in die Anweisung einfügen möchten. Variablen in vorbereiteten Anweisungen sind noch wirksamer als Hostvariablen in normalem expliziten SQL-Code, da Sie nicht nur einen EGL-Variablenwert einfügen, sondern ändern können, welche Variable von der dynamischen Anweisung verwendet wird.
myCustomerID int = 5;
myCustomerArray myCustomers[];
myHostVarString string = "SELECT CUSTOMER_ID, LAST_NAME";
myHostVarString += " FROM MYSCHEMA.MYTABLE";
myHostVarString += " WHERE CUSTOMER_ID = ?";
prepare myStatement from myHostVarString;
get myCustomerArray with myHostVarString using myCustomerID;
In
diesem Fall können Sie die Klausel using myCustomerID so ändern, dass
in verschiedenen Situationen unterschiedliche Variablen verwendet werden.Detaillierte vorbereitete Anweisung erstellen
EGL stellt ferner ein Tool bereit, das eine Anweisung prepare und die zugehörigen Anweisungen execute, get und open erstellt.
- Klicken Sie innerhalb einer Funktion in Ihrem Logikabschnitt mit der rechten Maustaste auf eine leere Zeile und klicken Sie dann auf SQL-Anweisung PREPARE hinzufügen. Das Fenster 'SQL-Anweisung PREPARE hinzufügen' wird geöffnet.
- Geben Sie in das Feld ID der vorbereiteten Anweisung einen Namen für die EGL-Anweisung prepare ein. Informationen zu den diesbezüglichen Regeln finden Sie im Abschnitt zu Namenskonventionen im Handbuch EGL Language Reference.
- Wählen Sie im Feld Name der SQL-Satzvariablen eine Satzvariable aus der Liste aus oder geben Sie einen Namen für eine neue Variable ein. Wählen Sie dann mithilfe der Schaltfläche Durchsuchen einen SQL-Satzabschnitt aus. Später müssen Sie dann im EGL-Quellcode eine SQL-Satzvariable mit diesem Namen definieren.
- Wählen Sie im Feld Typ der Ausführungsanweisung entweder execute, get oder open aus.
- Bei Auswahl von open im Feld Typ der Ausführungsanweisung geben Sie in das Feld ID der Ergebnisliste eine ID für die Ergebnisliste ein.
- Klicken Sie auf OK. EGL erstellt die Anweisung prepare sowie die zugehörige Datenzugriffsanweisung.