我做了一个充值的业务,接收终端的数据,充值成功则提交若干条update,insert语句,然后发送给终端充值成功的信息。然后等待终端的回应,如果网络超时等原因引起终端收不到我发的充值成功信息,则终端发一条充值失败的信息给我。我再将充值所做的update,insert等操作回滚。请问这个回滚能实现吗?怎么实现?我是用sql语句做的操作,不是事务。请问这个逆向错做怎么做?
解决方案 »
- sql往oracle导数据
- 帮忙看啊可能SQL语句,语句报错。
- Oracle 新手问题
- 关于A ResourcePool could not acquire a resource from its primary factory or source
- 关于oracle9I建立表空间,出现ORA-01144: 文件大小 (5242880 块) 超出 4194303 块的最大数的错误
- 【100分】探讨:Oracle中操作大字段为何如此慢!!!!
- 机器安装了Oracle8.05,卸载后安装8.16,安装过程正常,但不能启动服务OracleOraHome81ManagementServer,请高手指点
- 简单问题,如何得到指定行的记录!select * from test where rowid=2可否????
- 在安装clusterware之前进行cluvfy检查出现问题,求帮忙!
- Oracle启动问题
- 存储过程回滚问题
- oracle插入 xmltype问题
因为你这根本是两件事,执行UPDATE INSERT后,必须COMMIT这个事务,这次操作才算完成。
如果不COMMIT,你的过程无法执行完,数据表也会锁定在这个事务当中。
也就是说,你这次的UPDATE INSERT操作并没有完成。如果COMMIT,把这件事做完的话,是无法ROLLBACK的。。
所以无法实现。。
(
CUSTOMER_CODE VARCHAR2(32),
DIVISION_ORG_ID NUMBER(16),
DIVISION_ORG_NAME VARCHAR2(100)
)declare
ld_divi number(16);
begin
insert into t_temp (division_org_id) values (2);
select count(*) into ld_divi from t_temp;
dbms_output.put_line(ld_divi);
savepoint a;
insert into t_temp (division_org_id) values (3);
select count(*) into ld_divi from t_temp;
dbms_output.put_line(ld_divi);
savepoint b;
insert into t_temp (division_org_id) values (4);
select count(*) into ld_divi from t_temp;
rollback to b;
dbms_output.put_line(ld_divi);
end;
参考一下这段代码