Alle,EXECUTE IMMEDIATE mit USING-Klausel gibt Fehler
Ich bin sehr neu in der Regel zu Stored Procedures, aber ich habe Schwierigkeiten vor allem mit dem in Oracle. Ich habe ein sehr einfaches Beispiel dafür erstellt, was ich erreichen möchte, und ich bekomme immer noch den gleichen Fehler mit dieser vereinfachten Version.
Das Beispiel gespeicherte Prozedur ist wie folgt:
CREATE OR REPLACE PROCEDURE ashish_test
AUTHID CURRENT_USER IS
BEGIN
DECLARE
v_tab VARCHAR2(50);
v_strSQL VARCHAR2(50);
BEGIN
v_strSQL := 'SELECT * FROM :1';
v_tab := 'ex.emp';
EXECUTE IMMEDIATE v_strSQL USING v_tab;
END;
END;
Wenn ich die oben gespeicherte Prozedur CALL ashish_test()
nennen, die ich erhalten:
Basierend auf this article (Suchen Sie nach Beispiel 7- 1), USING
Schlüsselwort sollte den nummerierten Platzhalter (:1
) innerhalb v_strSQL
durch den ingespeicherten Wert ersetzen. Ich bekomme jedoch immer einen ungültigen Tabellenfehler. Ich vermute es ist, weil EXECUTE IMMEDIATE
ist nicht in der Lage, den Platzhalter mit dem Wert aus irgendeinem Grund zu ersetzen, aber ich bin mir nicht sicher, warum das ist. Weiß jemand, ob ich hier etwas Dummes mache?
Ich verwende dies auf Oracle 10g Datenbank & mit PL/SQL Developer.
Verwandte: [Warum kann ich nicht Bind-Variablen in DDL/SCL-Anweisungen in dynamischen SQL verwenden ?] (http://stackoverflow.com/q/25489002/1461424) – Krumia