当前位置:首页 » 废水回用 » plspl中回滚怎么用

plspl中回滚怎么用

发布时间: 2021-03-13 10:17:34

A. spring中事务回滚,如何设置

单写一个接口,接口中再定义提交和回滚,在接口中判断。
比如有两个sql语句,第一个执行了后,判断是否有异常、错误。如果第一个出现异常等,那么直接就停止了。
若第一个sql执行通过了,第二个报错。那么你调用接口中的回滚就可以了。

好久不做开发了。详细代码没法说。也许说的不怎么对。你验证一个。当然思路基本就这样的。

B. 用存储过程实现回滚

程序功能
在SQL Server数据库中建立两个表:USER表和USERDOC表。其中USER表中存放的是注册用户的用户名和密码,USERDOC表中存放的是该注册用户的个人资料,并且以用户名为索引。下面是表USER和USERDOC的定义:
Create Table USER(userName varchar(30),userPasswd varchar(30))
Create Table USERDOC(userName varchar(30),Age int,Sex int,PhoneNumber varchar(20),Address varchar(50))
当用户请求注册时,ASP脚本先将用户名和密码插入到USER表中,然后在USERDOC表中插入用户个人信息(年龄、性别、联系电话和家庭住址等)。同时,应用程序还必须保证USER表中的每一条记录在USERDOC表中都有相应的记录。
利用ASP内置ADO组件中的Connection对象可以实现对数据库操作的事务性处理。Connection对象的部分方法如下:
●Connection.BeginTrans方法:启动一个事务;
●Connection.CommitTrans方法:完成/提交一个事务;
●Connection.RollBackTrans方法:撤消/放弃一个事务。
//启动一个事务操作
<% Conn.BeginTrans %>
<% sqlText=“Insert into USER(userName,userPasswd) values(‘” %>
<% sqlText=sqlText & request(“usrName”) & “’,‘”&request(“usrPasswd”)&“’) ” %>
<% conn.execute(sqlText) %>
<% if conn.Errors.Count>0 then %>
<% conn.Errors.Clear %>
//如果插入数据操作失败,则事务向前回滚
<% conn.RollBackTrans %>
<% response.Redirct RegisterFail.html %>
<% end if %>
<% sqlText=“Insert into USERDOC(userName,Age,Sex,PhoneNumber,Address) ”%>
<% sqlText=sqlText & “values(‘”& request
(“usrName”) & “’, ” & request(“Age”) %>
<% sqlText=sqlText & “,‘” & request
(“PhoneNum”) & “’,‘” %>
<% sqlText=sqlText & request(“Address”) & “’) ” %>
//执行事务单元中的第二条插入语句
<% conn.execute(sqlText) %>
<% if conn.Errors.Count>0 then %>
<% conn.Errors.Clear %>
//如果操作失败,则事务向前回滚
<% conn.RollBackTrans %>
<% response.Redirct RegisterFail.html %>
<% end if %>
//如果整个事务操作执行正确,则提交事务
<% Conn.CommitTrans %>
//转向注册成功处理页面
<% response.Redirct RegisterOk.html %>

C. 如何在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,将会滚整个事务处理。

D. oracle中设置回滚点问题,回滚一次后这个点就没有了么

原因是因为drop是DDL语句,而oracle的rollback只支持DML语句。
所以如果你使用delete,可以回滚,但DDL的drop直接修改了数据字典,使表的数据不在数据字典中存放了,oracle就认为student不存在,也就无法回滚了。

E. sql中的存储过程里怎么写事务回滚啊

直接在存储过程结束之前添加以下代码:
EXCEPTION WHEN OTHERS THEN rollback;
解释:以上语句的意思是当出现任专何错误的时候,直接回属滚整个事务。
备注:存储过程中建议没有特殊需求的情况下,在执行结束之前不要进行commit,否则在中途提交,后面的代码保存,只能回滚到commit的位置。

F. PLSQL事务提交了,要怎么回滚

如何启动Transaction; 共有三种方式
1.自动transaction
每句statement都是一个transaction.例一个update指令更新多笔纪录, 要就全部成功, 只要失败,全部会回复原值.

2.ExplicitTransaction
以Begin Transaction开始(开启)

3.ImplicitTransaction (建议不要用)
以Set Implicit_Transaction ON

如何结束Transaction; 共有三种方式
1. COMMIT Transaction(提交)
Transaction期间的任何修改,都会保证到数据库中

2. ROLLBACK Transaction(回滚)
数据会回复Transaction前状态

3. KILL <SPID> 强迫停止, 会rollback

G. PLSQL 中只是查询命令,为什么 提交和回滚 图标也亮起来了。是哪里设置的问题吗,请哪位达人指点一下。

有些查询命令比如用到了数据库链,需要跨库,数据库不知道你是否做了对其他数据库需要提交的操作.故会提示你提交和回滚.

H. Oracle中的回滚

就三条回滚了
第二条:
INSERT INTO nn values('abc','aaa');
第三条:
INSERT INTO nn values('def','ddd');
第四条:
INSERT INTO nn values('ghi','ggg');

因为create table想回滚也回滚不了
当上边这条未提交,直接回滚的话,就相当于数据库没有写入

I. 在Access中如何回滚,请大侠指点!

ACCESS不支持事务,哪里来的回滚概念呢?根本就不是企业级的数据库啊。

J. ORACLE数据库中的回滚问题

只要你设置的回滚表空间够大,数据量多也可以回滚,主要看你分配的回滚空间。
执行的时候断电,数据库会自动回滚的。

热点内容
丁度巴拉斯情人电影推荐 发布:2024-08-19 09:13:07 浏览:886
类似深水的露点电影 发布:2024-08-19 09:10:12 浏览:80
《消失的眼角膜》2电影 发布:2024-08-19 08:34:43 浏览:878
私人影院什么电影好看 发布:2024-08-19 08:33:32 浏览:593
干 B 发布:2024-08-19 08:30:21 浏览:910
夜晚看片网站 发布:2024-08-19 08:20:59 浏览:440
台湾男同电影《越界》 发布:2024-08-19 08:04:35 浏览:290
看电影选座位追女孩 发布:2024-08-19 07:54:42 浏览:975
日本a级爱情 发布:2024-08-19 07:30:38 浏览:832
生活中的玛丽类似电影 发布:2024-08-19 07:26:46 浏览:239