Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (E-O)

 

EXECUTE-Anweisung [ESQL]

Mit dieser Anweisung führen Sie eine vorbereitete SQL-Anweisung aus.

Syntax 1
EXECUTE Anweisung
[ USING { Hostvariablenliste | DESCRIPTOR SQLDA-Name } ]
[ INTO { INTO-Hostvariablenliste | DESCRIPTOR INTO_SQLDA-Name } ]
[ ARRAY :Zeilenanzahl ]
Zeilenanzahl : Ganzzahl oder Hostvariable
Anweisung :   Bezeichner | Hostvariable | Zeichenfolge 
SQLDA-Name : Bezeichner
INTO_SQLDA-Name :  Bezeichner
Syntax 2
EXECUTE IMMEDIATE Anweisung
Anweisung :  Zeichenfolge | Hostvariable
Parameter
  • USING-Klausel   Die Ausgabe aus einer SELECT- oder einer CALL-Anweisung wird entweder in den Variablen in der Variablenliste oder in den vom benannten SQLDA beschriebenen Programmdatenbereichen abgelegt. Die Ausgabe (Auswahlliste oder Parameter) entspricht eins zu eins der Hostvariablenliste oder dem SQLDA-Deskriptor-Feld.

  • INTO-Klausel   Wenn EXECUTE INTO mit einer INSERT-Anweisung verwendet wird, ist die Folge, dass die eingefügte Zeile im zweiten Deskriptor zurückgegeben wird. Wenn beispielsweise automatisch inkrementierende Primärschlüssel oder BEFORE INSERT-Trigger verwendet werden, die Primärschlüsselwerte erzeugen, stellt die EXECUTE-Anweisung ein Verfahren zur Verfügung, um die Zeile sofort wieder abzurufen und den dieser Zeile zuvor zugeordneten Primärschlüsselwert zu bestimmen. Das gleiche Resultat kann mit @@identity in Verbindung mit automatisch inkrementierenden Schlüsseln erreicht werden.

  • ARRAY-Klausel   Die optionale ARRAY-Klausel kann mit den vorbereiteten INSERT-Anweisungen verwendet werden, um weite Einfügungen von mehr als einer Zeile gleichzeitig zu ermöglichen. Dadurch lässt sich die Performance verbessern. Der Ganzzahlwert stellt die Anzahl der einzufügenden Zeilen dar. Der SQLDA muss eine Variable für jeden Eintrag (Anzahl der Zeilen * Anzahl der Spalten) enthalten. Die erste Zeile wird in die SQLDA-Variablen von 0 bis (Spalten pro Zeile)-1 geschrieben, usw.

Bemerkungen

Die EXECUTE-Anweisung kann für jede SQL-Anweisung verwendet werden, die vorbereitet werden kann. Cursor werden für SELECT-Anweisungen oder CALL-Anweisungen verwendet, die viele Zeilen aus der Datenbank zurückgeben (siehe Cursor in Embedded SQL verwenden).

Nach der erfolgreichen Ausführung einer INSERT-, UPDATE- oder DELETE-Anweisung wird das Feld sqlerrd[2] des SQLCA (SQLCOUNT) mit der Anzahl der von diesem Vorgang betroffenen Zeilen ausgefüllt.

Syntax 1   führt die benannte dynamische Anweisung aus, die zuvor vorbereitet wurde. Wenn die dynamische Anweisung Platzhalter für Hostvariable enthält, die Informationen für die Anforderung (Bindevariablen) liefern, muss entweder der SQLDA-Name eine C-Variable angeben, die ein Zeiger auf einen SQLDA ist, der genug Deskriptoren für alle in der Anweisung enthaltenen·Bindevariablen enthält, oder die Bindevariablen müssen in der Hostvariablen-Liste bereitgestellt werden.

Syntax 2   Eine Kurzform zu PREPARE und EXECUTE einer Anweisung, die weder Indikatorvariable noch Ausgabe enthält. Die in der Zeichenfolge oder der Hostvariablen enthaltene Zeichenfolge wird unverzüglich ausgeführt und danach gelöscht.

Berechtigungen

Berechtigungen werden bei Ausführung der Anweisung überprüft.

Nebenwirkungen

Keine.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Funktion außerhalb der Kern-SQL.

Beispiel

Ausführen einer DELETE-Anweisung:

EXEC SQL EXECUTE IMMEDIATE
'DELETE FROM Employees WHERE EmployeeID = 105';

Ausführen einer vorbereiteten DELETE-Anweisung:

EXEC SQL PREPARE del_stmt FROM
'DELETE FROM Employees WHERE EmployeeID = :a';
EXEC SQL EXECUTE del_stmt USING :employee_number;

Ausführen einer vorbereiteten Abfrage:

EXEC SQL PREPARE sel1 FROM
'SELECT Surname FROM Employees WHERE EmployeeID = :a';
EXEC SQL EXECUTE sel1 USING :employee_number INTO :surname;