Mit dieser Anweisung bereiten Sie eine Anweisung vor, damit sie später ausgeführt oder zum Definieren eines Cursors verwendet werden kann.
PREPARE Anweisungsname FROM Anweisung [ DESCRIBE Deskriptionstyp INTO [ [ SQL ] DESCRIPTOR ] Deskriptor ] [ WITH EXECUTE ]
Anweisungname : Bezeichner oder Hostvariable
Anweisung : Zeichenfolge oder Hostvariable
Deskriptionstyp : [ ALL | BIND VARIABLES | INPUT | OUTPUT | SELECT LIST ] [ LONG NAMES [ [ [ OWNER. ]TABLE. ]COLUMN ] | WITH VARIABLE RESULT ]
Anweisungsname Der Anweisungsname kann ein Identifizierer oder eine Hostvariable sein. Sie dürfen jedoch keinen Bezeichner verwenden, wenn Sie mehrere SQLCA einsetzen. Wenn Sie es dennoch tun, könnten zwei vorbereiteten Anweisungen die gleiche Anweisungsnummer zugeordnet werden, was dazu führen kann, dass die falsche Anweisung ausgeführt oder geöffnet wird. Auch ist ein Bezeichner für einen Anweisungsnamen bei Anwendungen mit mehreren Threads nicht empfehlenswert, bei denen der Anweisungsname gleichzeitig von mehreren Threads referenziert werden kann.
DESCRIBE-Klausel Unter Verwendung der Klausel DESCRIBE INTO DESCRIPTOR wird die vorbereitete Anweisung im angegebenen Deskriptor beschrieben. Der DESCRIBE-Typ kann jeder der zulässigen DESCRIBE-Typen sein.
WITH EXECUTE-Klausel Unter Verwendung der WITH EXECUTE-Klausel wird die Anweisung nur dann ausgeführt, wenn es sich nicht um eine CALL- oder SELECT-Anweisung handelt und sie keine Hostvariablen besitzt. Die Anweisung wird sofort nach der erfolgreichen Ausführung gelöscht. Wenn PREPARE und DESCRIBE (falls es sie geben sollte) erfolgreich sind, aber die Anweisung nicht ausgeführt werden kann, wird die Warnung SQLCODE 111, SQLSTATE 01W08 ausgegeben, und die Anweisung wird gelöscht.
Die Klauseln DESCRIBE INTO DESCRIPTOR und WITH EXECUTE können die Performance verbessern, da sie die erforderliche Client/Server-Kommunikation verringern.
WITH VARIABLE RESULT-Klausel Die WITH VARIABLE RESULT-Klausel wird verwendet, um Prozeduren zu beschreiben, die mehr als eine Ergebnismenge mit unterschiedlichen Anzahlen und Typen von Spalten haben könnten.
Wenn WITH VARIABLE RESULT verwendet wird, stellt der Datenbankserver nach der DESCRIBE-Anweisung SQLCOUNT auf einen der folgenden Werte ein:
0 Die Ergebnismenge kann sich ändern: Der Prozeduraufruf sollte nach jeder OPEN-Anweisung erneut beschrieben werden.
1 Die Ergebnismenge ist unveränderlich. Eine erneute Beschreibung ist nicht erforderlich.
Aus Kompatibilitätsgründen wird die Vorbereitung der Anweisungen COMMIT, PREPARE TO COMMIT und ROLLBACK immer noch unterstützt. Es wird jedoch empfohlen, dass Sie alle Operationen zur Transaktionsverwaltung mit statischer Embedded SQL vornehmen, da dies von bestimmten Anwendungsumgebungen gefordert wird. Außerdem unterstützen andere Embedded SQL-Systeme keine dynamischen Operationen zur Transaktionsverwaltung.
Die PREPARE-Anweisung bereitet eine SQL-Anweisung aus Anweisung vor und ordnet die vorbereitete Anweisung Anweisungsname zu. Dieser Anweisungsname wird referenziert, um die Anweisung auszuführen oder um einen Cursor zu öffnen, wenn es sich bei der Anweisung um eine SELECT-Anweisung handelt. Der Anweisungsname kann eine Hostvariable vom Typ a_sql_statement_number sein, die in der Header-Datei sqlca.h definiert wird,welche automatisch einbezogen wird. Wenn ein Bezeichner für Anweisungsname verwendet wird, kann nur eine Anweisung pro Modul mit Anweisungsname vorbereitet werden.
Wenn eine Hostvariable für Anweisungsname verwendet wird, muss sie vom Typ SHORT INT sein. Es gibt eine Typendefinition für diesen Typ in sqlca.h mit dem Namen a_sql_statement_number. Dieser Typ wird vom SQL-Präprozessor erkannt und kann in einem DECLARE-Abschnitt verwendet werden. Die Hostvariable wird von der Datenbank während der PREPARE-Anweisung eingetragen und muss vom Programmierer nicht initialisiert werden.
Keine.
Jede zuvor vorbereitete Anweisung mit demselben Namen geht verloren.
Die Anweisung wird nach der Verwendung nur dann gelöscht, wenn Sie WITH EXECUTE angeben, und wenn sie erfolgreich ausgeführt wurde. Stellen Sie sicher, die Anweisung mit DROP nach der Verwendung unter anderen Bedingungen zu löschen. Wenn Sie dies nicht tun, wird der dieser Anweisung zugeordnete Speicher nicht wieder beansprucht.
SQL/2003 Kernfunktion.
Die folgende Anweisung bereitet eine einfache Abfrage vor:
EXEC SQL PREPARE employee_statement FROM 'SELECT Surname FROM Employees'; |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |