Bonjou à tous,
j'ai un soucis avec la gestion des erreurs entre PL/SQL et le script appellant qui est en KSH.
Le problème est que lorsque l'on gère les erreurs PL/SQL avec des Exception handlers, SQLPLUS affiche, même si le code PL/SQL a généré une erreur...PL/SQL procedure successfully completed.
Du coup son code de retour est 0
Je vous donne un exemple, qui me pose problème.
Je lance depuis le ksh un script sql:
La procédure sql se lance et fait une erreur ORA-00031
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 KillSession() # PURPOSE: Kill all the T24OWNER sessions #-------------------------------------------------- { sqlplus /nolog << EOF connect / as sysdba whenever sqlerror exit 2 whenever oserror exit 3 @${CUSTOM_BASE}/scripts/sql/kill_session.sql $sid $timestamp EOF ret_kill=$? }
Du coup ma variable ret_kill=$? reçoit 0 et considère que tout c'est passé à merveille!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ################# START ########################## Check how many sessions are connected with the T24OWNER user There are still 17 sessions connected for the user T24OWNER These sessions will be killed as the script has been launched in offline mode ********************************************************************* SQLERRM = ORA-00031: session marked for kill SQLCODE = -31 ********************************************************************* ################# END ########################## PL/SQL procedure successfully completed. Elapsed: 00:00:00.05
Comment pourrais faire pour récupérer le code de retour de PL/SQL au lieu de celui de SQLPLUS?????
Merci d'avance pour votre aide
Kaz![]()
Partager