Die Anweisung EXECUTE IMMEDIATE ermöglicht den Aufbau von Anweisungen innerhalb von Prozeduren mit einer Kombination aus Literal-Zeichenfolgen (in Apostrophen) und Variablen. Beispiel: Die folgende Prozedur enthält eine EXECUTE IMMEDIATE-Anweisung, die eine Tabelle erstellt.
CREATE PROCEDURE CreateTableProcedure( IN tablename char(128) ) BEGIN EXECUTE IMMEDIATE 'CREATE TABLE ' || tablename || '(column1 INT PRIMARY KEY)' END; |
Die EXECUTE IMMEDIATE-Anweisung kann mit Abfragen verwendet werden, die Ergebnismengen zurückgeben. Zum Beispiel:
CREATE PROCEDURE DynamicResult( IN Columns LONG VARCHAR, IN TableName CHAR(128), IN Restriction LONG VARCHAR DEFAULT NULL ) BEGIN DECLARE Command LONG VARCHAR; SET Command = 'SELECT ' || Columns || ' FROM ' || TableName; IF ISNULL( Restriction,'') <> '' THEN SET Command = Command || ' WHERE ' || Restriction; END IF; EXECUTE IMMEDIATE WITH RESULT SET ON Command; END; |
Die folgende Anweisung ruft diese Prozedur auf:
CALL DynamicResult( 'table_id,table_name', 'SYSTAB', 'table_id <= 10'); |
table_id | table_name |
---|---|
1 | ISYSTAB |
2 | ISYSTABCOL |
3 | ISYSIDX |
... | ... |
In atomaren zusammengesetzten Anweisungen können Sie EXECUTE IMMEDIATE-Anweisungen nicht verwenden, die ein COMMIT verursachen, da COMMIT in diesem Kontext nicht zulässig ist.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |