Frage

Ich bin ein PL / SQL-Prozedur zu schreiben, die dynamisch muss, um einige Abfragen zu generieren, von denen eine temporäre Tabelle beinhaltet aus einer Abfrage als Parameter verwenden Ergebnisse zu schaffen.

CREATE OR REPLACE PROCEDURE sqlout(query IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE  'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ');';
END;

Es kompiliert richtig, aber auch mit sehr einfachen Abfragen wie mit:

BEGIN
    sqlout('SELECT * FROM DUAL');
END;

IT wirft ORA-00911: invalid character. Wenn ich die erstellte Abfrage manuell ausführen läuft es richtig. An diesem Punkt bin ich in der Lage zu bestimmen, was das Problem verursacht.

War es hilfreich?

Lösung

Versuchen Sie, die verlieren „;“ von innen, dass Sie die Zeichenfolge Execute Immediate.

EXECUTE IMMEDIATE  'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ')';
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top