2017-09-27 10 views
1

私は一連の更新ステートメントを順番に実行する必要があります。私が使用しているデータベースはOracleです。これらのクエリは、シェルスクリプトを使用してデータベースに接続して実行しています。ここで知りたいのは、以前の更新ステートメントが成功した場合にのみ、これらのコマンドを次々に実行できることです。自動更新はシェルスクリプトでOFFに設定されており、すべてのステートメントをコミットしたい場合は、それらのすべてが正常に実行された場合にのみコミットします。これらの更新コマンドを順番に実行する方法は、前のクエリのステータスとすべてのクエリが正常に実行された後にコミットをチェックすることです。一連の更新ステートメントを実行するSQLクエリ

+0

は、OracleやMySQLを使用していますか? – jarlh

+0

elseブロックの場合に使用 –

+0

オラクルDB –

答えて

2

あなたはWHENEVER SQLERRORのEXITのROLLBACKを使用することができます。

sqlplus -s username/[email protected] <<EOF 
    WHENEVER SQLERROR EXIT ROLLBACK 
    update table1 set mycolumn=value where mycolumn=1; 
    update table1 set mycolumn=othervalue where mycolumn=2; 
    update table1 set mycolumn=othervalue where mycolumn=3; 
    update table1 set mycolumn=othervalue where mycolumn=4; 
    commit; 
    exit 
EOF 

ここでは、ドキュメントへのリンクです:

https://docs.oracle.com/database/121/SQPUG/ch_twelve052.htm

+0

これはまさに私が探しているものです。ありがとうございます:) –

+0

素晴らしい!あなたの問題を解決した場合は、回答を受け入れることを検討してください。 –

関連する問題