求助!oeacle 事务处理
(
db in zd_wh2.zdmc%type,
zdmc in zd_wh2.zzdmc%type,
v1 in varchar2,
v2 in varchar2
)
as
kmc varchar2(4000);
kzdmc varchar2(4000);
sqlstr varchar2(4000);
sqlstr1 varchar2(4000);
begin
sqlstr :='update '||db||' set '||zdmc||'='''||v2||''' where '||zdmc||'='''||v1||'''';
execute immediate sqlstr;
declare
cursor table1
is
select kmc,kzdmc from zd_wh2 where zdmc = '||db||';
table2 table1%ROWTYPE;
begin
open table1;
loop
fetch table1 into table2;
exit when table1%NOTFOUND;
sqlstr1:='update '||table2.kmc||' set '||table2.kzdmc||'='''||v2||''' where '||table2.kzdmc||'='''||v1||'''';
execute immediate sqlstr1;
end loop;
close table1;
commit;
exception
when others then
rollback;
end;
commit;
exception
when others then
rollback;
end;
如果游标有误,会执行第一个rollback;
但是不会执行第二个rollback,
我想也执行第二个rollback
怎么办