首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于SQL存储过程中的事务处理.该怎么处理

2012-01-13 
关于SQL存储过程中的事务处理.我现在想创建一个存储过程,同时向两个表中新增数据,我的要求是:1.这两个新增

关于SQL存储过程中的事务处理.
我现在想创建一个存储过程,同时向两个表中新增数据,我的要求是:
1.这两个新增操作只能全部完成或全部失败,
2.当第一个新增操作失败,则弹出错误提示,并中止继续操作.
3.如果第一个新增操作成功,而第二个新增操作失败,则弹出错误信息,并取消第一个新增的操作.

[解决办法]
失败就rollback 两个都成功的情况下结束事物
[解决办法]
事务
[解决办法]
create or replace procedure aa (o_msg out varchar2)is

exp_tb1 EXCEPTION;
exp_tb2 EXCEPTION;
err_msg varchar2(100);
begin
begin

err_msg:= 'insert table1 failed! ';
insert into table1 ...;

err_msg:= 'insert table2 failed! ';

insert into table2 ...;

err_msg:= 'insert OK! ';

commit;
EXCEPTION
WHEN OTHERS THEN
rollback;
o_msg := err_msg || '( ' ||SQLERRM|| ') ';
--dbms_output.put_line(v_step||v_msg);
end;
end aa;
[解决办法]
刚才那两个异常变量没有用到:
create or replace procedure aa (o_msg out varchar2)is

err_msg varchar2(100);
begin
begin

err_msg:= 'insert table1 failed! ';
insert into table1 ...;

err_msg:= 'insert table2 failed! ';

insert into table2 ...;

err_msg:= 'insert OK! ';

commit;
EXCEPTION
WHEN OTHERS THEN
rollback;
o_msg := err_msg || '( ' ||SQLERRM|| ') ';
dbms_output.put_line(o_msg);
end;
end aa;

热点排行