存在しないテーブルにカーソルを宣言したい。もちろん、私のプロシージャはコンパイルされません。
このテーブルは一時的なテーブルであり、前処理によって作成されます。実行時に存在しますが、コンパイル時に別の話になります。
他のDML操作の選択/更新には、
EXECUTE IMMEDIATE 'operation from tmp_table'
しかし、カーソルの回避策が見つかりません。
方法はありますか?
基本的に、これをコンパイルしたい
drop table test;
/*from this on should compile*/
DECLARE
cursor c is select * from test;
BEGIN
for reg in c LOOP
/*...*/
END LOOP;
END;
アップデート
これまでのところコンパイルしていません:
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
おかげで、CREATEPROCEDUREを使用する必要があります。
前もって感謝します。