Quiero declarar un cursor en una tabla que no existe. Por supuesto, mi procedimiento no compila.Oracle PLSQL: declare un cursor en una tabla no existente
Esta tabla es una tabla temporal y se crea mediante un proceso previo. Existirá en tiempo de ejecución, pero en tiempo de compilación es otra historia.
Por mi selecto/actualiza y otras operatorias DML, he utilizado
EXECUTE IMMEDIATE 'operation from tmp_table'
pero no puedo encontrar una solución para los cursores.
¿Hay alguna manera?
Básicamente, quiero esto para compilar
drop table test;
/*from this on should compile*/
DECLARE
cursor c is select * from test;
BEGIN
for reg in c LOOP
/*...*/
END LOOP;
END;
actualización
Hasta el momento no compilar:
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
En caso de utilizar CREATE PROCEDURE, gracias.
Gracias de antemano.
Usted consigue la excepción, ya que en realidad se ejecuta el código. Reemplace su 'declare' por un' CREATE PROCEDURE test_cursor AS' para compilar el código. –
: facepalm 15cccc – Tom
TOAD no tiene botón de compilación. : S Esto debería ser trivial! – Tom