Oracle-PLSQL - Deklarieren Sie einen cursor auf eine nicht vorhandene Tabelle

Möchte ich deklarieren Sie einen cursor für eine Tabelle, die nicht vorhanden ist. Natürlich, mein Verfahren nicht kompilieren.

Diese Tabelle ist eine temporäre Tabelle erstellt und durch einen vorgegebenen Prozess. Es existieren zur Laufzeit, sondern zur compile-Zeit seine eine andere Geschichte.

Für mein select /Update einer anderen DML-Operationen, die ich verwendet habe,

EXECUTE IMMEDIATE 'operation from tmp_table'

aber ich kann nicht finden einen workaround für Cursor.

Gibt es eine Möglichkeit?

Im Grunde, ich will, dass das kompilieren

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:

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

Sollten CREATE PROCEDURE, danke.

Vielen Dank im Voraus.

  • Sie erhalten die Ausnahme, da Sie eigentlich den code ausführen. Ersetzen Sie Ihre declare durch eine CREATE PROCEDURE test_cursor AS um den code zu kompilieren.
  • :facepalm 15cccc
  • TOAD hat keine compile-button. :S Das sollte trivial sein !!!
  • "ERKLÄREN..BEGIN..END;/" bedeutet "kompilieren und ausführen dieses anonymen block". Dies ist, warum Sie immer ORA-00942. CREATE PROCEDURE ...;/" bedeutet "kompilieren und erstellen Sie diese Prozedur". Sie werden nicht erhalten, ORA-00942 dann, bis Sie die Prozedur aufrufen.
InformationsquelleAutor Tom | 2009-12-21
Schreibe einen Kommentar