如果没有错误则提交事务,如果Oracle SQL * plus中发生错误则回滚

时间:2014-03-05 09:56:35

标签: sql oracle commit oracle-sqldeveloper

以下是我用于在我的数据库中部署SQL脚本的小块代码。我只是想知道我是否可以根据结果自动完成提交或回滚的任务。

disc
connect username/password@database
spool D:\Deployments\path\to\logfile\logfile.log
@D:\Deployments\path\to\script\sqlquery_script.sql

如果sql脚本成功运行没有任何错误意味着我希望系统自动提交它,并且万一发生任何错误都应该回滚所有事务(注意我的sql脚本有很多更新语句)

当我使用WHENEVER SQLERROR EXIT SQL.CODE ROLLBACK;时,关闭SQL * plus窗口而不显示任何错误。

请帮忙解决此问题。

2 个答案:

答案 0 :(得分:4)

您没有说出您的脚本是什么。将它放在PL / SQL匿名块中怎么样?

BEGIN
    ... updates here ...

    COMMIT; 
EXCEPTION WHEN OTHERS THEN
    ROLLBACK;
    RAISE; 
END;
/

答案 1 :(得分:-1)

可能您可以调用过程或在Sql脚本中调用过程

exec procedureName(parameter1,parameter2);

将此语句保留在sql文件中

如果发生异常,请将此声明与上述声明一起保留

异常       当x_Error然后       ROLLBACK;