Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

EXECUTE - Vorbereitete Anweisung ausführen

EXECUTE führt eine mit PREPARE vorbereitete Anweisung aus. Platzhalter für Eingabewerte in der dynamisch formulierten Anweisung werden durch aktuelle Werte ersetzt.

Ist die Anweisung eine SELECT-Anweisung, werden die Spaltenwerte des Ergebnissatzes in Benutzervariablen oder einem SQL-Deskriptorbereich abgelegt.

Ist die Anweisung eine CALL-Anweisung, dann werden Werte von Ausgabeparametern in Benutzervariablen oder einem SQL-Deskriptorbereich abgelegt.

Eine EXECUTE-Anweisung kann beliebig oft für eine mit PREPARE vorbereitete Anweisung ausgeführt werden.

Eine Anweisung kann mit EXECUTE nur in der Übersetzungseinheit ausgeführt werden, in der sie vorher mit PREPARE vorbereitet wurde.



EXECUTE anweisungsbezeichner

[INTO deklaration ]

[USING deklaration ]


deklaration ::= { variable | SQL DESCRIPTOR GLOBAL deskriptor }


variable ::= : benutzervariable [[INDICATOR] : indikatorvariable ]
         [,: benutzervariable [[INDICATOR] : indikatorvariable ]] ...



anweisungsbezeichner

Bezeichner für die dynamisch formulierte Anweisung, die mit PREPARE vorbereitet wurde.

Enthält der Anweisungstext einen Cursornamen, muss die Cursorbeschreibung für diesen Cursor bei Ausführung der EXECUTE-Anweisung vorbereitet und der Cursor geöffnet sein.


INTO-Klausel

Angabe, wohin die Ausgabewerte der mit anweisungsbezeichner angegebenen dynamisch formulierten Anweisung gespeichert werden. Die INTO-Klausel muss in folgenden Fällen angegeben werden:

    • die vorbereitete Anweisung ist eine SELECT-Anweisung

    • die vorbereitete Anweisung ist eine CALL-Anweisung und die darin aufgerufene Prozedur hat Parameter vom Typ OUT oder INOUT


benutzervariable

Name einer Benutzervariable, der ein Ausgabewert zugewiesen wird.

Der Datentyp einer Benutzervariablen muss mit dem Datentyp des zugehörigen Ausgabewerts verträglich sein (siehe Abschnitt „Werte in Benutzervariable oder Deskriptorbereich lesen").

Ist ein Ausgabewert ein Aggregat mit mehreren Elementen (SELECT-Anweisung), dann muss die zugehörige Benutzervariable ein Vektor mit derselben Anzahl von Elementen sein.
Die Anzahl der angegebenen Benutzervariablen muss zur Anzahl der Ausgabewerte der mit anweisungsbezeichner angegebenen SELECT-Anweisung passen.

Die Anzahl der angegebenen Benutzervariablen muss bei einem Prozeduraufruf mit der CALL-Anweisung zur Anzahl der Prozedurparameter vom Typ OUT oder IN-OUT der aufgerufenen Prozedur passen.


indikatorvariable

Name der Indikatorvariable für die vorangehende Benutzervariable.

Ist die Benutzervariable ein Vektor (SELECT-Anweisung), muss auch die Indikatorvariable ein Vektor mit derselben Anzahl von Elementen sein.

Die Indikatorvariable zeigt an, ob der NULL-Wert übertragen wurde oder Datenverlust aufgetreten ist:

0

Die Benutzervariable enthält den gelesenen Wert. Die Zuweisung war fehlerfrei.

-1

>0

Der Wert, der zugewiesen werden sollte, ist der NULL-Wert.

Bei alphanumerischen Werten und National-Werten:
Der Benutzervariable wurde eine verkürzte Zeichenkette zugewiesen. Der Wert der Indikatorvariable gibt die Originallänge in Code Units an.


deskriptor

Name eines SQL-Deskriptorbereichs, der die Datentypbeschreibung für die Ausgabewerte enthält und in den bei Ausführung der mit anweisungsbezeichner angegebenen Anweisung die Ausgabewerte (für Prozeduren die Prozedurparameter vom Typ OUT oder INOUT) geschrieben werden.

Der SQL-Deskriptorbereich muss vorher angelegt und geeignet belegt worden sein:

        • Der Wert des Felds COUNT muss mit der Anzahl der Ausgabewerte der mit anweisungsbezeichner angegebenen Anweisung übereinstimmen (bei Aggregaten ein Ausgabewert pro Element, bei Prozeduren ein Ausgabewert pro Prozedurparameter vom Typ OUT oder INOUT) und es muss gelten:

          0 <= COUNT <= festgelegte Maximalanzahl von Deskriptorbereichseinträgen

        • Die Ausgabewerte werden den DATA-Feldern der Deskriptorbereichseinträge in der Reihenfolge der Einträge im Deskriptorbereich zugewiesen. Die Datentypbeschreibung eines Eintrags muss mit dem Datentyp des zugehörigen Ausgabewerts verträglich sein (siehe Abschnitt „Werte in Benutzervariable oder Deskriptorbereich lesen").

          Ist ein zu übertragender Wert NULL, wird das entsprechende INDICATOR-Feld auf den Wert -1 gesetzt. Wird eine zuzuweisende Zeichenkette abgeschnitten, gibt das entsprechende INDICATOR-Feld die Originallänge an.


USING-Klausel

Angabe, woher die Eingabewerte für die mit anweisungsbezeichner angegebene dynamisch formulierte Anweisung gelesen werden. Die INTO-Klausel muss in folgenden Fällen angegeben werden:

      • wenn die SELECT-Anweisung Fragezeichen als Platzhalter für Werte enthält

      • wenn die in der CALL-Anweisung aufgerufene Prozedur Parameter vom Typ IN oder INOUT besitzt und die korresponierenden Argumente Fragezeichen als Platzhalter für Werte enthalten


benutzervariable

Name einer Benutzervariablen, deren Wert einem Platzhalter in der dynamisch formulierten Anweisung anweisungsbezeichner zugewiesen wird.

Der Datentyp einer Benutzervariablen muss mit dem Datentyp des zugehörigen Platzhalters verträglich sein (siehe Abschnitt „Werte für Platzhalter").

Steht der Platzhalter für ein Aggregat mit mehreren Elementen (SELECT-Anweisung), dann muss die zugehörige Benutzervariable ein Vektor mit derselben Anzahl von Elementen sein.
Die Anzahl der angegebenen Benutzervariablen muss mit der Anzahl der Platzhalter in der SELECT-Anweisung übereinstimmen.

Die Anzahl der angegebenen Benutzervariablen muss bei einem Prozeduraufruf mit der CALL-Anweisung zur Anzahl der Platzhalter für Parameter vom Datentyp IN oder INOUT passen.

Die Benutzervariablen werden in der angegebenen Reihenfolge den Platzhaltern in der dynamisch formulierten Anweisung zugewiesen.


indikatorvariable

Name der Indikatorvariable für die vorangehende Benutzervariable.

Ist die Benutzervariable ein Vektor (SELECT-Anweisung), muss auch die Indikatorvariable
ein Vektor mit derselben Anzahl von Elementen sein.

Der Wert der Indikatorvariable zeigt an, ob der NULL-Wert übertragen werden soll:

< 0

Der NULL-Wert soll zugewiesen werden.

>= 0

Der Wert der Benutzervariable soll zugewiesen werden.



deskriptor

Name eines SQL-Deskriptorbereichs, der die Datentypen und Werte für die Platzhalter in der dynamisch formulierten Anweisung anweisungsbezeichner enthält.

Der SQL-Deskriptorbereich muss vorher angelegt und geeignet belegt worden sein:

        • Der Wert des Deskriptorbereichsfelds COUNT muss mit der Anzahl der benötigten Eingabewerte übereinstimmen (bei Aggregaten ein Eingabewert pro Element, bei Prozeduren ein Ausgabewert pro Prozedurparameter vom Typ OUT
          oder INOUT), und es muss gelten:

          0 <= COUNT <= festgelegte Maximalanzahl von Deskriptorbereichseinträgen

        • Die Werte der DATA-Felder der Deskriptorbereichseinträge (bzw. NULL-Werte bei negativem INDICATOR) werden in der Reihenfolge der Einträge im Deskriptorbereich den Platzhaltern in der dynamisch formulierten Anweisung zugewiesen.
          Die Datentypbeschreibung eines Eintrags muss mit dem Datentyp des zugehörigen Platzhalters verträglich sein (siehe Abschnitt „Werte für Platzhalter" ).


Beispiel

EXECUTE dyn_statement

INTO SQL DESCRIPTOR GLOBAL 'DESKR_BEREICH'

Siehe auch

EXECUTE IMMEDIATE, PREPARE, SELECT