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

SQLERRORが機能しない場合

    以下の一般的なスニペットを検討してください:

    $ cmd1 < <(cmd2) # Or cmd1 <(cmd2)
    $ echo $?
    

    ここで、$? cmd1の終了ステータスに設定されます 。 cmd2の終了ステータス 失われます。

    あなたの場合、sqlplus たまたまcmd2です。したがって、そのコマンドの終了ステータスは$?にキャプチャされません。 。

    これを試すことができます;

    $ sqlplus ... | cmd1
    $ status=(${PIPESTATUS[@]})
    $ for i in ${status[@]}; do
    >     [ $i -ne 0 ] && echo Exited with $i
    > done
    $ echo Exited with 0
    

    cmd1の場合は注意してください 複雑な構造です(while readなど 例)whileループで実行したものはすべてサブシェルで実行され、変更された環境(変数/ pwd)はすべて失われます。




    1. 複数の列に外部キーを追加する

    2. nodejsを使用してMysqlクエリで配列を渡します

    3. SQLクエリの結果行を全範囲で均等に減らす方法は?

    4. SQLServerリンクサーバーからのOracle関数の呼び出し