当前位置:首页 » 存储配置 » oracle存储过程事务

oracle存储过程事务

发布时间: 2022-08-01 04:10:45

❶ Oracle存储过程,更新大量数据,如何循环分批次提交

可通过以下方法:

以100条数据为例,如果海量数据可参考。

如test表中有如下数据:

sql">declare
iint;--定义变量
v_countint;--定义变量
v_loopint;--定义变量
begin
selectcount(*)intov_countfromtest;--计算表内数据总数
selectceil(v_count/10)intov_loopfromal;--计算需要循环次数
i:=1;--为i赋值
whilei<=v_looploop--循环退出条件
updatetestsetbegintime=<=10;--执行更新
commit;--提交
i:=i+1;--i依次加1
endloop;--结束循环
end;

❷ 如何在ORACLE 存储过程中设置回滚断点

学习存储过程中使用断点回滚事务时,发现目前网络上存在一个问题,那就是使用断点回滚后,都忘记了一个很重要的事情,提交事务。虽然使用了断点回滚,但是断点回滚不像rollBack或commit一样结束当前事务,而使用断点回滚只会回滚到声明断点的地方,之前的产生的事务仍需要提交的,如果不提交,事务一直在数据库缓存.
Demo:
procere doSomeThing(p_number out number) as
begin
insert into t_test_user_mingming(id,loginname,password,realname,type)
values(se_test_user_mingming_id.nextval,'xiaoming','1234','小明',1);
p_number := 1;
savepoint ps;--- 设置断点 ps
insert into t_test_info_mingming(id,pal,type,create_time,note)
values(se_test_info_id.nextval,'我想买台thinkPad 可以俺莫有钱',1,sysdate,'ceshi');
p_number := 2;
savepoint sp;----设置断点 sp
insert into t_test_agent(agent_id) values(1);---我这里此行会抛出异常 ORA-01400 可以替换为下句 手动抛出一个异常
-----RAISE_APPLICATION_ERROR (-20004,'抛出的异常玩玩');
commit;
exception --捕获异常
when others then
rollback to ps; ---- 如果产生异常,回滚到断点 ps
p_number :=0;
commit; --- 提交事务
end doSomeThing;
这里本人做了实验,如果在异常中不加 commit 语句,使用PL/SQL测试时,异常在缓存,t_test_user_mingming 表中没有数据记录。

存储过程里的事务操作:
create or replace procere pr_mypro2(p_a in varchar2,p_b in varchar2,p_count out number)

temp varchar2(1000); /*定义临时变量*/
is
begin

select code into p_count from table1 where a=p_a; /*查询并返回值*/
temp := p_count; /*将返回值赋给临时变量*/
savepoint point1; /*保存点*/

insert into table2(a,b)values(temp,p_b); /*将临时变量值添加到新表的字段*/

savepoint point2;

insert into

exception
when others then
rollback to savepoint point1; /*异常处理,保存点下面的操作都不会被执行*/
return;

end;

保存点(SAVEPOINT)是事务处理过程中的一个标志,与回滚命令(ROLLBACK)结合使用,主要的用途是允许用户将某一段处理回滚而不必回滚整个事务。

如果定义了多个savepoint,当指定回滚到某个savepoint时,那么回滚操作将回滚这个savepoint后面的所有操作(即使后面可能标记了N个savepoint)。
例如,在一段处理中定义了五个savepoint,从第三个savepoint回滚,后面的第四、第五个标记的操作都将被回滚,如果不使用ROLLBACK TO savepoint_name而使用ROLLBACK,将会滚整个事务处理。

❸ 求助,关于java调用oracle存储过程的事务控制的相关推荐

用java来调用存储过程,一般我们已经把复杂的业务处理逻辑搬到了数据库,也就是用存储过程来实现,可以把事务控制放在存储过程中来实现,这样从效率上来说会好一些
如果只是移植了一部分业务的话,可以在java中控制事务(也可以借助spring的事务管理),如rollback等,还是有效的

这个链接中有一部分东西,可以看看
http://bbs.csdn.net/topics/260019701

❹ Oracle的函数或者存储过程是处于同一个事务里吗

1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比...

❺ oracle存储过程

分如下情况:
1。如果return 在commit之后,已经提交无所谓回滚。
2。如果return在commit之前,所有都回滚
3。如果希望中间有一部分回滚是不可能的,可以把中间的一部分提取出来成为一个单独的存储过程或者函数,把它设置为独立事务控制,这样执行这个存储过程就会提交,其他的程序块,可以通过rollback控制回滚。
独立事务控制语法:
CREATE OR REPLACE PROCEDURE
IS
PRAGMA AUTONOMOUS_TRANSACTION;

❻ Oracle怎么显式开启事务,开始事务跟锁有什么关系,在存储过程中有时怎么开启和提交,回滚事务的

oracle使用语句savepoint sp_begintran开启显式事务,锁本身和事务是没有关系的,只要是数据库的操作都会产生锁。处于事务中的SQL语句只有这个事务提交(commit)之后,事务中的SQL语句影响的表记录上的锁才会释放。锁常见有共享锁(select语句产生)和排它锁(DML语句产生),如果一个表上加载有共享锁,还可以叠加共享锁,但不能叠加排它锁。如果一个表上加载有排他锁,就什么锁都不能加了,也就是说如果DML语句占用过多的时间,这些数据库效率就不高,就需要优化,当然select语句性能低了也不行。
每个存储过程可以不用显式事务,它本身就为你开启了一个隐式事务,如果需要开启显示事务,就通过savepoint sp_begintran开启,无论是不是显式还是隐式事务,你都得通过commit work提交事务,通过exception捕捉SQL语句异常,在异常发生时需要回滚事务(rollback work)。

❼ oracle 存储过程事务控制

把第一个commit去掉既可,如下:

create or replace procere aaa is
var2 number;
begin SELECT Seq_Tbtopic.nextval INTO var2 FROM al;
insert into tbTopic values (var2 , 1, 1, '口语3333',1,3,2,'','');

insert into tbchildtopic values (Seq_Tbchildtopic.Nextval,var2,'','ck','/kangsi/Resource/test/B1/1_2_2_1_Emily_ck_.mp3','ck');

commit;
end aaa;

❽ oracle 一个存储过程可以包含几个事务,为什么

一个存储过程可以包含多个事务,但一般,大家都不想看到前面的事务成功了,而后面的事务失败的情况发生,因此,放一个事务,统管整个存储过程就ok了。

❾ 请教执行多个oracle存储过程的事务问题

你这样属于2个事务在操作一个表。如果表中有唯一键,会有一个过程失败的。如果没有唯一键,会写入20000条记录。但是如果存储过程里操作的表是动态传进去的。如果表名不同,同时执行多个这个存储过程是没有影响的。

❿ oracle存储过程的commit和rollback

commit和rollback不止是存储过程中使用,所有的事务都需要用到这两个关键字
commit是指将你所做的update,insert,delete数据的更改提交数据库,完成此次事务,相当于你去商场购物,售货员给你开了票后,你去收银台付款完毕,这样你才可以拿到你要买的货物.
rollback是指将你所做的update,insert,delete数据的更改恢复更改前的状态,此次事务取消,相当于你去商场购物,售货员给你开了票后,你却不去收银台付款,而是离开了商场

热点内容
androidubuntu 发布:2024-09-17 03:50:27 浏览:701
识梦源码 发布:2024-09-17 03:50:18 浏览:26
诺基亚密码忘了打什么电话 发布:2024-09-17 03:27:09 浏览:555
树深度优先算法 发布:2024-09-17 03:26:58 浏览:472
跳转页源码 发布:2024-09-17 03:13:05 浏览:543
html文件上传表单 发布:2024-09-17 03:08:02 浏览:785
聊天软件编程 发布:2024-09-17 03:00:07 浏览:726
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249