sql >> Database teknologi >  >> RDS >> Oracle

Håndtering af fejlhåndtering, mens du kører sqlplus fra shell-scripts

Det er rigtigt, hvad Max siger. Prøv dette ændrede script

#!/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

Bemærk brugen af ​​sql_return_code til at fange SQLPLUS-returkoden.

DBMS_OUTPUT-sætningen skulle fejle med fejl - "SP2-0734:ukendt kommando begynder...". Du kan finde fejlmeddelelsen i logfilen.

Det er muligt at fange sp2-fejlene i SQLPLUS 11g ved hjælp af fejllogningsfunktionen. Tag et kig på http://tkyte.blogspot.co.uk/2010/04/new-thing-about-sqlplus.html for mere information.



  1. Hvordan får jeg Java- og Postgres-enums til at fungere sammen til opdatering?

  2. Hvordan får man aktuel dato i PL/SQL?

  3. Hvad og hvornår skal jeg angive setFetchSize()?

  4. Sådan sammenkædes strenge i PostgreSQL