sql >> Database >  >> RDS >> Oracle

Foutafhandeling beheren tijdens het uitvoeren van sqlplus vanuit shellscripts

Wat Max zegt klopt. Probeer dit aangepaste 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

Let op het gebruik van sql_return_code om de SQLPLUS-retourcode vast te leggen.

De DBMS_OUTPUT-instructie zou moeten mislukken met fout - "SP2-0734:onbekende opdracht begint...". U vindt de foutmelding in het logbestand.

Het is mogelijk om de sp2-fouten in SQLPLUS 11g op te vangen met behulp van de foutregistratiefunctie. Kijk op http://tkyte.blogspot.co.uk/2010/04/new-thing-about-sqlplus.html voor meer informatie.



  1. Joomla SQL-injectie-kwetsbaarheid

  2. 2 manieren om uw zoekopdrachtresultaten op te maken in SQLcl (Oracle)

  3. Voorwaardelijke INSERT INTO-instructie in postgres

  4. MySQL migreren naar PostgreSQL op AWS RDS, deel 4