Ich möchte einen Cursor auf eine Tabelle deklarieren, die nicht vorhanden ist. Natürlich kompiliert meine Prozedur nicht.Oracle PLSQL - Deklarieren Sie einen Cursor auf eine nicht vorhandene Tabelle
Diese Tabelle ist eine temporäre Tabelle und wird von einem Vorprozess erstellt. Es wird zur Laufzeit existieren, aber zur Kompilierzeit ist es eine andere Geschichte.
Für meine select/aktualisiert eine andere Operationen DML, ich
EXECUTE IMMEDIATE 'operation from tmp_table'
verwendet habe, aber ich kann nicht eine Lösung für Cursor finden.
Gibt es einen Weg?
Grundsätzlich möchte ich diese
drop table test;
/*from this on should compile*/
DECLARE
cursor c is select * from test;
BEGIN
for reg in c LOOP
/*...*/
END LOOP;
END;
Update
Bisher nicht kompilieren kompilieren:
SQL> declare
2 c sys_refcursor;
3 BEGIN
4 open c for 'select * from pepito'; -- 'pepito' does not exist
5 close c;
6 end;
7/
declare
*
ERROR at line 1:
ORA-00942: table or view does not exist
ORA-06512: at line 4
verwenden CREATE PROCEDURE Sollte Dank.
Vielen Dank im Voraus.
Sie erhalten die Ausnahme, da Sie tatsächlich den Code ausführen. Ersetzen Sie Ihr 'declare' durch ein' CREATE PROCEDURE test_cursor AS', um den Code zu kompilieren. –
: facepalm 15cccc – Tom
TOAD hat keine Kompilier-Taste. : S Das sollte trivial sein !!! – Tom