Oracle : execution d'un curseur dans un fichier de commande
Bonjour,
Dans mon fichier de commande, j'ai mis le code suivant pour executer un fichier sql :
Code:
1 2 3 4 5
|
SET USERNAME=...
SET PASSWORD=....
SET HOSTSTRING=...
sqlplus %USERNAME%/%PASSWORD%@%HOSTSTRING% @%BASE_PATH%\mon.sql |
Dans le fichier mon.sql, j'exécute via un cursor 3 procédures de cette façon :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| declare DATECALC date;
cursor CursorCalc is
select date_s from table1 ;
Begin OPEN CursorCalc;
loop
FETCH CursorCalc into DATECALC;
EXIT WHEN CursorCalc%NOTFOUND;
proc1(DATECALC);
proc2(DATECALC);
proc3(DATECALC);
END LOOP;
CLOSE CursorCalc;
END;
commit;
/
exit; |
Ce code sql (en enlevant commit; /exit;) fonctionne sous Toad, il prend environ 1-2 min.
Mais quand je lance mon fichier de commande, les procédures ne s'exécutent pas (les données ne sont pas mis à jour) et la commande dos se ferme très vite.
Qu'est-ce que j'ai "raté" dans mon fichier sql ou dans mon .bat ?
Pourquoi cela ne veut pas marcher avec un fichier de commande ?
Merci d'avance
ma fenête de commande DOS se ferme très vite...
Accessoirement pour ce qui est de la commande DOS j'imagine qu'il y a une instruction exit dans le fichier de commande qui ferme la fenêtre.
vous pouvez :
1 Mettre une pause après l'appel de sqlplus pur avoir le temps de voir ce qui se passe.
(tapez pause depuis DOS pour voir...)
2 Si le fichier de commande est exécuté depuis DOS une astuce consiste à lancer une seconde session DOS depuis la première. La commande exit reviendra à la première session et la fenête ne se fermera pas.
Genre :
Code:
1 2 3 4 5 6 7 8
|
DOS> cmd
Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
DOS>echo hello
hello
DOS>exit
DOS> |
Pozzo