Je veux déclarer un curseur sur une table qui n'existe pas. Bien sûr, ma procédure ne compile pas.Oracle PLSQL - Déclare un curseur sur une table inexistante
Cette table est une table temporaire créée par un pré-traitement. Il existera à l'exécution, mais au moment de la compilation, c'est une autre histoire.
Pour ma sélection/met à jour une autre opération DML, je l'ai utilisé
EXECUTE IMMEDIATE 'operation from tmp_table'
mais je ne peux pas trouver une solution de contournement pour les curseurs.
Y a-t-il un moyen?
Fondamentalement, je veux que cela compiler
drop table test;
/*from this on should compile*/
DECLARE
cursor c is select * from test;
BEGIN
for reg in c LOOP
/*...*/
END LOOP;
END;
mise à jour
Jusqu'à présent, pas la compilation:
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
devez utiliser CREATE PROCEDURE, merci.
Merci d'avance.
Vous obtenez l'exception puisque vous exécutez en fait le code. Remplacez votre 'declare' par un' CREATE PROCEDURE test_cursor AS' pour compiler le code. –
: facepalm 15cccc – Tom
TOAD n'a pas de bouton de compilation. : S Cela devrait être trivial !!! – Tom