求助!oeacle 事务处理

nm3000 2004-08-26 10:45:04
(
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
怎么办
...全文
85 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dxphero 2004-08-27
  • 打赏
  • 举报
回复
第二个end对应的是第一个beign
这样的话就需要对第一个beign进行处理
如果后面执行有错误的话就要执行rollback
这两个是有关联的
如果你去掉第一个exception的话试一试怎么样
eboywy 2004-08-26
  • 打赏
  • 举报
回复
我看只要一个就行了。
再有就是
exception
when others then
只有一个others,至少写一个确切的错误类型吧。no_data_found什么的。

62,054

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧