存储过程的commit
Ⅰ oracle 存储过程需要commit吗
存储过程里面的DML语句比如insert,update是需要commit的
Ⅱ 一个存储过程中更新多个表可以用一个COMMIT吗
技术上是可以的,原则建议。
一般情况下事务有原子性,如果要一起执行的语句放在事务中提交,达到这些语句的“同步”,要不都不执行,要不都执行。显然,这里是可以放在一起的让其执行的。
但语句中很明显涉及了更新插入等相关操作,此进需要在事务上加排他锁,这样会导致数据库的并发性下降,所以对于事务我们一般会选用的是执行较快的几组语句入在一起的。一般事务较为短小,至少执行速 度会很快。
假定,我是说假定,如果 有一个事务需要执行的时间是一天,由于事务中有更新语句,所以事务加了排他锁,其他事务与程序只有等待。这样可想你的数据库不能再接受任何外部的调用了。也就是说如果你的程序执行过长,最好不要使用事务。
所以在事务语句中是不允许进行数据库的压缩,创建,等耗时较高的操作的,这是sql中规定的!
Ⅲ oracle 存储过程是自动commit吗
需要写commit.
外部程序里,
qry1.add('commit');
execsql;
与执行其它语句一样。
Ⅳ 如何在存储过程中实现一个UPDATE的SQL里每一条COMMIT一次
每执行一次语句就commit;一次就行了啊
但是个人不建议一个update 一次commit,个人比较倾向为一个过程里只写1个commit,写在最后,然后在异常处理里面写rollback
避免处理中途出错结果部分改变了部分没改变
Ⅳ Oracle存储过程中需要写commit吗
这个完全看你自己的需求。
如果是你不需要再存储过程中进行提交,而是由调用程序负责提交或者回滚,那么不需要再存储过程中commit或者rollback
如果你不想由调用程序负责提交或者回滚,那么应该在存储过程中进行commit或rollback
Ⅵ 存储过程中需要写commit吗
如果只是存储过程中执行的话,对于更新、删除操纵是一定要写commit的。另外可以在pl/sql客户端中对存储过程进行test测试,可以详细看到存储过程的执行过程。
Ⅶ 怎样在oracle存储过程中自动commit
需要写commit. 外部程序里, qry1.add('commit'); execsql; 与执行其它语句一样。
Ⅷ 一个存储过程里面可以有多个BEGIN tran、commit tran、rollback tran吗
可以,嵌套事务中commit可以提交一个事务点,也就是多个begin tran,就需要多个commit对应
而rollback可以回滚全部事务点,也就是只有一个rollback就可以了
Ⅸ db2存储过程return前可以commit吗
直接在存储过程结束之前添加以下代码: EXCEPTION WHEN OTHERS THEN rollback; 解释:以上语句的意思是当出现任何错误的时候,直接回滚整个事务。 备注:存储过程中建议没有特殊需求的情况下,在执行结束之前不要进行commit,否则在中途提交,...
Ⅹ oracle存储过程的commit和rollback
commit和rollback不止是存储过程中使用,所有的事务都需要用到这两个关键字
commit是指将你所做的update,insert,delete数据的更改提交数据库,完成此次事务,相当于你去商场购物,售货员给你开了票后,你去收银台付款完毕,这样你才可以拿到你要买的货物.
rollback是指将你所做的update,insert,delete数据的更改恢复更改前的状态,此次事务取消,相当于你去商场购物,售货员给你开了票后,你却不去收银台付款,而是离开了商场