Managing error handling while running sqlplus from shell scripts

前端 未结 5 1947
天涯浪人
天涯浪人 2020-12-14 03:58
#!/bin/sh

echo \"Please enter evaluate database username\"
read eval_user
echo \"Please enter evaluate database password\"
read eval_pass
echo \"Please enter the da         


        
5条回答
  •  感情败类
    2020-12-14 04:22

    What Max says is correct. Try this modified 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/$eval_pass@$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
    

    Please note the use of sql_return_code to capture the SQLPLUS return code.

    The DBMS_OUTPUT statement should fail with error - "SP2-0734: unknown command beginning...". You can find the error message in log file.

    It is possible to trap the sp2 errors in SQLPLUS 11g using the error logging facility. Please have a look at http://tkyte.blogspot.co.uk/2010/04/new-thing-about-sqlplus.html for more information.

提交回复
热议问题