Bonjour,
J'ai besoin d'une aide pour un problème dont je n'arrive pas à trouver la solution sur le net.
J'ai un script perl qui exécute via une commande système (avec sqlplus) un script sql. Je teste le code retour de ma commande système qui doit être à 0 si tout est OK. Seulement, même si le script sql contient des erreurs, le code retour est toujours égal à 0 et cela m'embête pas mal.
Et voila mon script sql :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $CmdText="sqlplus $ENV{'PROFINT_DBUID'}/$ENV{'PROFINT_DBPWD'}\@$ENV{ORA_DFLT_HOSTSTR} \@$ENV{'PROFINT_SQLBTC'}/rssh_btc.sql $ENV{'PROFINT_SQLBTC'}"; print OUT "$CmdText\n"; if ( system("$CmdText >> $trace") != 0 ) { print OUT "ERROR: Failed to execute $ENV{'PROFINT_SQLBTC'}/rssh_btc.sql.\n"; &exit(1) }
On voit bien que j'aurai du mettre "exec dbms_snapshot.refresh('&BTCSCOTB','C');" dans la commande de rafraichissement de snapshot mais cette erreur est signalée et ne change pas le code retour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SET SCAN OFF; SET ECHO ON; SET serveroutput ON; WHENEVER SQLERROR EXIT 1; WHENEVER OSERROR EXIT 2; @/opt/PRO/Profint/SQL/BTC/venv_btc.sql WHENEVER SQLERROR EXIT 1; WHENEVER OSERROR EXIT 2; dbms_snapshot.refresh('&BTCSCOTB','C'); exit;
Une idée???
Merci
Partager