
急急:我要实现在oracle存储过程中,如果前面的DML执行成功,就提交,如果前面的有异常就全部回滚。
我要实现在oracle存储过程中,如果前面的DML执行成功,就提交,如果前面的有异常就全部回滚。这样的语句我该怎么写呢?...
我要实现在oracle存储过程中,如果前面的DML执行成功,就提交,如果前面的有异常就全部回滚。
这样的语句 我该怎么写呢? 展开
这样的语句 我该怎么写呢? 展开
展开全部
begin
sql语句;
exceptions when others then
rollback;
end;
就这样可以了,执行成功的会提交的
sql语句;
exceptions when others then
rollback;
end;
就这样可以了,执行成功的会提交的
展开全部
在exception 里面加入rollback, 在procedure 最后加入commit
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这里的执行成功是什么意思?语法错误DML会失败?还是DML效果不是你理想得到的算失败?
更多追问追答
追问
比如我上面是两条update语句,如果执行成功了,就commit,如果错误了,就回滚.
create or replace procedure test
as
begin
update rs_score_card set kpi_value=999 where quarter='201201' and asso_code='1' and kpi_code='kpi00001';
commit;
exception when others
then
rollback;
end;
比如 这样可以不?
追答
这个语法应该是没问题的,但是其实单独看这个存储过程是没有意义的。
你的update本身报错的话,就不可能commit;相应的rollback也没有意义。
我想你的意思是,好几个dml语句,如果其中一个有错,就全部rollback是吧?
这样写也行,但是不利于排查错误,不知道到底是哪个dml出错,也不知道是什么原因错误。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询