我有一组需要一个接一个地执行的更新语句。我正在使用的数据库是Oracle,我通过使用shell脚本连接到数据库来运行这些查询。我想知道的是,只有在前一个更新语句成功的情况下,我才能一个接一个地执行这些命令。 shell脚本中的自动更新设置为OFF,我想只在所有语句都成功执行时提交所有语句,否则我想退出。有没有办法通过检查前面的查询状态并在所有查询成功运行后提交一个接一个地运行这些更新命令。
答案 0 :(得分:2)
你可以使用WHENEVER SQLERROR EXIT ROLLBACK:
sqlplus -s username/password@network-name <<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
以下是文档的链接: