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 IMMEDIATE - Dynamisch formulierte Anweisung ausführen

Mit der Anweisung EXECUTE IMMEDIATE wird eine dynamisch formulierte Anweisung in einem Schritt vorbereitet und ausgeführt. EXECUTE IMMEDIATE entspricht also einer PREPARE-Anweisung mit unmittelbar darauffolgender EXECUTE-Anweisung. Allerdings bleibt die Anweisung nicht vorbereitet und kann nicht mit EXECUTE nochmals ausgeführt werden.

Dynamisch formulierte CALL-Anweisungen können mit EXECUTE IMMEDIATE ausgeführt werden, wenn die aufzurufende Prozedur keine Prozedurparameter oder nur Prozedurparameter vom Typ IN besitzt.



EXECUTE IMMEDIATE anweisungsvariable

anweisungsvariable ::= : benutzervariable



anweisungsvariable

Alphanumerische Benutzervariable, die den Anweisungstext enthält. Für Benutzervariable ist auch ein Datentyp CHAR(n) zulässig, mit 256 <= n <= 32000.

Folgende Bedingungen müssen erfüllt sein:

      • Innerhalb des Anweisungstexts dürfen keine Benutzervariablen und keine Fragezeichen als Platzhalter für unbekannte Werte verwendet werden.

      • Der Anweisungstext darf weder SQL-Kommentare noch Kommentare der Wirtssprache enthalten. Ausnahmen sind Pragmas (--%PRAGMA).

      • Der Anweisungstext darf keine SELECT-Anweisung und keine Cursorbeschreibung sein.

      • Bei einer INSERT-Anweisung darf die RETURN INTO-Klausel nicht angegeben werden.

      • Enthält der Anweisungstext einen Cursornamen (DELETE WHERE CURRENT OF, UPDATE WHERE CURRENT OF), muss die Cursorbeschreibung für diesen Cursor bei Ausführung der EXECUTE IMMEDIATE-Anweisung vorbereitet und der Cursor geöffnet sein.

Anweisungen für EXECUTE IMMEDIATE

Folgende Anweisungen können mit EXECUTE IMMEDIATE ausgeführt werden:

ALTER SPACE

ALTER STOGROUP

ALTER TABLE

COMMIT

CALL (nur Eingabeparameter; Typ IN)

CREATE INDEX

CREATE FUNCTION

CREATE PROCEDURE

CREATE SCHEMA

CREATE SPACE

CREATE STOGROUP

CREATE SYSTEM_USER

CREATE TABLE

CREATE USER

CREATE VIEW

DELETE

DROP FUNCTION

DROP INDEX

DROP PROCEDURE

DROP SCHEMA

DROP SPACE

DROP STOGROUP

DROP SYSTEM_USER

DROP TABLE

DROP USER

DROP VIEW

GRANT

INSERT (ohne RETURN INTO-Klausel)

MERGE

PERMIT

REORG STATISTICS

REVOKE

ROLLBACK

SET CATALOG

SET SCHEMA

SET SESSION AUTHORIZATION

SET TRANSACTION

UPDATE

Daneben können auch alle Utility-Anweisungen mit EXECUTE IMMEDIATE ausgeführt werden (siehe Handbuch „ SQL-Sprachbeschreibung Teil 2: Utilities“).


Folgende Anweisungen können nicht mit EXECUTE IMMEDIATE ausgeführt werden:

ALLOCATE DESCRIPTOR

CLOSE

DEALLOCATE DESCRIPTOR

DECLARE CURSOR

DESCRIBE

EXECUTE

EXECUTE IMMEDIATE

FETCH

GET DESCRIPTOR

INCLUDE

OPEN

PREPARE

RESTORE

SELECT

SET DESCRIPTOR

STORE

WHENEVER


Beispiel

Zur Laufzeit soll eine SQL-Anweisung mit EXECUTE IMMEDIATE übersetzt und ausgeführt werden:


In SOURCESTMT wird die folgende SQL-Anweisung als alphanumerische Zeichenkette eingelesen:

CREATE TABLE auftragkunden.auftragsver.aufstat

(astnr INTEGER, astxt CHAR(15))


Die Anweisung wird übersetzt und ausgeführt mit:

EXEC SQL EXECUTE IMMEDIATE :SOURCESTMT END-EXEC

Siehe auch

EXECUTE, PREPARE