2017-09-27 21 views
1

我有一組需要更新語句來執行一個接一個的。我使用的數據庫是Oracle,我通過使用shell腳本連接到數據庫來運行這些查詢。我在這裏想知道的是,只有在前一個更新語句成功的情況下,我才能夠一個接一個地執行這些命令。自動更新設置爲在shell腳本了,我想,當所有的人都成功一樣,我想退出執行只提交所有的語句。有沒有一種方法來運行這些更新通過檢查前面的查詢狀態和之後的所有查詢都成功運行commit命令一前一後。SQL查詢執行了一系列的更新語句

+0

你使用的是Oracle或MySQL? – jarlh

+0

如果使用其他塊 –

+0

這是Oracle數據庫 –

回答

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

太棒了!考慮接受答案,如果它解決了你的問題。 –