oracle存储过程中循环调用存储过程

我在oracle存储过程中循环调用另一个存储过程被调用的存储过程中没有commit,作用是在一张表里取数据插入其他的表我发现循环完成之后只是最后一次循环的结果请问循环的时... 我在oracle 存储过程中循环调用另一个存储过程
被调用的存储过程中没有commit,作用是在一张表里取数据插入其他的表
我发现循环完成之后只是最后一次循环的结果
请问 循环的时候必须每次调用都要提交一下么?
如果在某次调用的时候出现异常怎么办? 提交的不会回滚了吧?怎么能实现任意一次调用,回滚所有操作?
我就是写了个游标 在游标里循环 其中就一个参数是从游标获得的。
如果每次调用都commit,数据都是对的 不commit只成功了最后一条
我发现调用的那个存储过程中的序列在第二次调用的时候取的值还是原来的值 没有自增
找到原因了 原来是临时表没清 commit后会自动释放临时表 没commit 数据会存在 所以导致违反约束 所以我我产生了如此错觉
展开
 我来答
JG_陈
推荐于2017-10-01 · TA获得超过206个赞
知道小有建树答主
回答量:651
采纳率:100%
帮助的人:362万
展开全部
1、没有必要每次都提交,到了CKPT,系统自动处理的
2、出现异常你可以回滚
3、提交了的不会回滚
4、调用的时候不提交,循环后统一提交
后面的问题:
关键的地方把SQL语句打印出来,根据这些SQL语句查询出数据做分析
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tpj_wow
2011-01-11 · TA获得超过532个赞
知道小有建树答主
回答量:232
采纳率:100%
帮助的人:295万
展开全部
1. 不需要提交,我们有个系统,调用了N多个存储过程,期间循环了无数次,一直到最后才提交了,就是为了事务处理可以全部回滚.
2. 你这里出现错误的原因应该是代码的问题,很可能你传入给存储过程的参数每次都一样,处理结果也就每次都一样,当然也有可能是其他原因,具体情况你自己单步跟踪一下看看.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liuzongsha
2011-01-11 · TA获得超过1609个赞
知道小有建树答主
回答量:1148
采纳率:0%
帮助的人:546万
展开全部
这样吧,每次插入的时候先清空相应的数据(和插入的where条件相同),然后插入,然后提交,循环一次了。还有测试的时候单步走一下,看看具体哪块的问题!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式