oracle 如何终止存储过程的运行!

比如一个存储过程调用了5个子存储过程,第一个子存储过程执行报错后,如何终止所有存储过程的运行?因为现在情况是第一个错误报了ORA-00054错,但是除了错误的子存储过程其... 比如一个存储过程调用了5个子存储过程,第一个子存储过程执行报错后,如何终止所有存储过程的运行?因为现在情况是第一个错误报了ORA-00054错,但是除了错误的子存储过程其他都执行了。这样数据会很有问题。请问大大如何加判断直接终止整个存储过程的运行保证数据的一致。 展开
 我来答
微尘丶霖
2013-05-10 · TA获得超过324个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:76.8万
展开全部
select * from v$access a where object like '存储过程名%' --存储过程名为大写字母
select * from v$session where sid=74 --74为上一个查询得到的SID值,可能是多个,这里找到他们对应的serial#值
alter system kill session '74,118' --参数为'sid,serial#',用于停止这个回话,同时也终止了存储过程
天雨青辰
2012-09-15 · TA获得超过169个赞
知道答主
回答量:160
采纳率:100%
帮助的人:119万
展开全部
如果觉得数据有问题,直接停止,输入rollback执行就可以,或者像楼上所说的捕获异常,去除每个存储过程中的commit,在所有的都执行OK后再commit
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
198901245631
推荐于2017-10-04 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1724万
展开全部
1. 在V$ACCESS视图中找到要停止进程的SID:
SELECT SID FROM V$ACCESS WHERE NAME='存储过程名称';
2. 在V$SESSION视图中查找到查出SID和SERIAL#
SELECT SID,SERIAL#,FROM V$SESSION WHERE SID='刚才查到的SID'。
3.杀掉查找出来的进程
alter system kill session 'SID,SERIAL#' immediate;
解释:进程都有唯一的进程id(SID)和序列号(SERIAL#),之后通过kill命令即可强制停止进程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
时间成灰
2012-09-10 · TA获得超过3172个赞
知道小有建树答主
回答量:981
采纳率:0%
帮助的人:948万
展开全部
在外层的存储过程中捕获并处理异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式