oracle并发执行存储过程,关于存储过程并发处理解决方案

当前位置:我的异常网» Oracle开发 » 关于存储过程并发处理解决方案

关于存储过程并发处理解决方案

www.myexceptions.net  网友分享于:2013-01-05  浏览:116次

关于存储过程并发处理

想测试一下存储过程处理过程中,另一个进程也调用了当前存储过程时,数据一致性的问题,现做了以下测试:

创建表A100(可理解成库存总量表) C1  varchar2(10) --产品编码

C2  number        --产品库存总量

A200(可理解成备品出入库记录表。暂时不考虑主键问题)

C1  varchar2(10)  --产品编码

C2  number         --出入库量

创建了两个存储过程SP_TEST1、SP_TEST2。两个存储过程大多数内容一样,只是SP_TEST1在Commit前多一条dbms_lock.sleep(5); 以模拟上一个处理尚未完成时,另一个处理又被调用。(存储过程见下面)

调用方法:执行SP_TEST1,紧接着执行SP_TEST2(在5秒钟之内),发现执行结果与预想的出入很大

1)第一次调用存储过程时,A100表会生成两条“产品编码”一样的记录,“产品库存总量”不同,分别是两个存储过程调用是赋的值

2)第二次(包括之后)调用时,尽管先执行的SP_TEST1,但A100表合计总量仍会漏掉SP_TEST1执行时赋予的参数量

请问:1)我这种实验方法本身有没有问题(即是否可以利用dbms_lock.sleep(5);模拟存储过程执行时间很长);

2)若我的方法没有问题,为什么并发执行时SP_TEST1的参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值