2009-05-20 5 views
2

J'ai un travail par lots AIX qui utilise isql pour exécuter une procédure stockée dans Sybase. La procédure stockée renvoie un code d'erreur dans certaines conditions. Je voudrais que isql transmette ce code de retour au script AIX. Puis-je capturer le code de retour du proc stocké dans isql, ou dois-je écrire un fichier de sortie et demander à mon script AIX de le vérifier?Sybase stocké proc appelé depuis isql sous AIX: comment gérer le code retour

Voici à quoi ressemble la commande isql. Il fonctionne dans un script shell Korn.

isql -D$database -S$server -U$userId -P$password << EOF 
EXEC MY_STORED_PROC $AN_INPUT_PARAMETER 
go 
EOF 

Répondre

2

Si je me souviens bien, le $? est réglé sur la valeur de retour de commande. Ajouter quelque chose comme ça après la ligne EOF:


if [[ $? != 0 ]]; then 
    print "stored procedure failed" 
    exit 
fi 
+0

Merci pour la publication. Je ne savais pas à propos de $? Cela m'amène à mi-chemin. isql renvoie toujours 0 même si le proc stocké renvoie une valeur différente. Une idée de comment je peux obtenir isql pour reconnaître la valeur de retour du proc stocké? –

+1

Hmm, mon meilleur pari serait de jouer avec les niveaux d'erreur (option -m) et/ou de rediriger la sortie isql vers un fichier et de faire un sed/awk rapide dessus. –

0

Est-ce ce que vous vouliez réaliser?

isql -D$database -S$server -U$userId -P$password << EOF | grep RETVAL | awk -F"=" '{print $2}' | read value 
declare @retval int 
EXEC @retval = MY_STORED_PROC $AN_INPUT_PARAMETER 
SELECT "RETVAL=" + convert(varchar, @retval) 
go 
EOF 

echo "Procedure returned: $value" 
Questions connexes