以下是我用于在我的数据库中部署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窗口而不显示任何错误。
请帮忙解决此问题。
答案 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;