sql >> データベース >  >> RDS >> Oracle

シェルスクリプトからsqlplusを実行している間のエラー処理の管理

    マックスの言うことは正しい。この変更されたスクリプトを試してください

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

    SQLPLUSリターンコードをキャプチャするためにsql_return_codeを使用していることに注意してください。

    DBMS_OUTPUTステートメントは、エラー「SP2-0734:不明なコマンドの開始...」で失敗するはずです。エラーメッセージはログファイルにあります。

    エラーロギング機能を使用して、SQLPLUS11gでsp2エラーをトラップすることができます。詳細については、http://tkyte.blogspot.co.uk/2010/04/new-thing-about-sqlplus.htmlをご覧ください。



    1. IDが存在するときにテーブルの不明な主キーを取得する

    2. OracleデータベースでINTO句を使用して即時実行を使用する方法

    3. SQLのトリガーとは何ですか?それらを実装する方法は?

    4. MySQL length()とchar_length()