Bonjour,

Je fais appel à un script SQL au sein d'un script écrit en Shell, et selon l'endroit où l'erreur est rencontrée, j'aimerais retourner un message d'erreur variable. Schématiquement :

Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
--script.sql
 
BEGIN
-- En cas d'erreur, retourner "Erreur pendant la requête 1" et sortir
select col1 from tab1 where condition1
-- En cas d'erreur, retourner "Erreur pendant la requête 2" et sortir
select col2 from tab2 where condition2
-- En cas d'erreur, retourner "Erreur pendant la requête 3" et sortir
select col3 from tab3 where condition3
END;
/
EXIT;

Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
#script.ksh
 
sqlplus -s login/mdp@sid @script.sql
echo $MSG_ERR # Ici, le message d'erreur doit nous indiquer quelle requête a rencontré une erreur.

Mon script SQL contenait à l'origine la ligne suivante en en-tête : WHENEVER SQLERROR EXIT FAILURE; mais ce n'est évidemment pas suffisant pour récupérer une description détaillée de l'erreur rencontrée pendant la requête.

Existe-t-il un mécanisme similaire aux exceptions C++ / Java pour SQL PLUS ? Est-il possible de retourner du texte en sortie de script ? Je vous remercie pour vos réponses !