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.
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;
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.EGL stellt ferner ein Tool bereit, das eine Anweisung prepare und die zugehörigen Anweisungen execute, get und open erstellt.