Oracle
 sql >> Base de données >  >> RDS >> Oracle

Gestion de la gestion des erreurs lors de l'exécution de sqlplus à partir de scripts shell

Ce que dit Max est exact. Essayez ce script modifié

#!/bin/sh

echo "Please enter evaluate database username"
read eval_user
echo "Please enter evaluate database password"
read eval_pass
echo "Please enter the database name"
read db_name

LOGFILE=shell_log.txt

sqlplus -s /nolog <<-EOF>> ${LOGFILE}
WHENEVER OSERROR EXIT 9;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
connect $eval_user/[email protected]$db_name
DBMS_OUTPUT.put_line('Connected to db');
EOF

sql_return_code=$?

if [ $sql_return_code != 0 ]
then
echo "The upgrade script failed. Please refer to the log results.txt for more information"
echo "Error code $sql_return_code"
exit 0;
fi

Veuillez noter l'utilisation de sql_return_code pour capturer le code de retour SQLPLUS.

L'instruction DBMS_OUTPUT doit échouer avec l'erreur - "SP2-0734 :début de commande inconnu...". Vous pouvez trouver le message d'erreur dans le fichier journal.

Il est possible d'intercepter les erreurs sp2 dans SQLPLUS 11g à l'aide de la fonction de journalisation des erreurs. Veuillez consulter http://tkyte.blogspot.co.uk/2010/04/new-thing-about-sqlplus.html pour plus d'informations.