现在的表结构和内容大致如下:
管理CD 商品CD 日期 类别 数量 已使用数量 原价
10001 001 2010/01/01 入库 100 20 15
10002 001 2010/01/02 入库 200 0 16
10003 001 2010/01/03 入库 300 0 17
10004 001 2010/01/04 入库 400 0 18
10005 001 2010/01/05 入库 500 0 19
10006 001 2010/01/06 出库 200 0
10007 001 2010/01/07 出库 500 0 管理CD是不可重复的KEY,存储过程要计算入库的已使用数量和出库的原价,计算
方法如下:
2010/01/06的出库200件,先取2010/01/01的剩余80件,再从2010/01/02取120件,
所以2010/01/06的原价为(80*15+120*16)/200,更新后2010/01/01的已使用数量
为100,2010/01/02的已使用数量为120。2010/01/07的出库500件,先取2010/01/02的剩余80件,再从2010/01/03取300件,
再从2010/01/04取120件,所以2010/01/07的原价为(80*16+300*17+120*18)/500
更新后2010/01/02的已使用数量为200,2010/01/03的已使用数量为300,
2010/01/04的已使用数量为120
现在我写的存储过程是两层循环去更新数据,外层循环取出出库数据,内层循环取
出入库数据进行更新,但是客户的数据一天的入库出库就有上万条,这样的话,存
储过称要执行10小时左右,显然不能满足需求,请问大家有什么好的方法吗?
管理CD 商品CD 日期 类别 数量 已使用数量 原价
10001 001 2010/01/01 入库 100 20 15
10002 001 2010/01/02 入库 200 0 16
10003 001 2010/01/03 入库 300 0 17
10004 001 2010/01/04 入库 400 0 18
10005 001 2010/01/05 入库 500 0 19
10006 001 2010/01/06 出库 200 0
10007 001 2010/01/07 出库 500 0 管理CD是不可重复的KEY,存储过程要计算入库的已使用数量和出库的原价,计算
方法如下:
2010/01/06的出库200件,先取2010/01/01的剩余80件,再从2010/01/02取120件,
所以2010/01/06的原价为(80*15+120*16)/200,更新后2010/01/01的已使用数量
为100,2010/01/02的已使用数量为120。2010/01/07的出库500件,先取2010/01/02的剩余80件,再从2010/01/03取300件,
再从2010/01/04取120件,所以2010/01/07的原价为(80*16+300*17+120*18)/500
更新后2010/01/02的已使用数量为200,2010/01/03的已使用数量为300,
2010/01/04的已使用数量为120
现在我写的存储过程是两层循环去更新数据,外层循环取出出库数据,内层循环取
出入库数据进行更新,但是客户的数据一天的入库出库就有上万条,这样的话,存
储过称要执行10小时左右,显然不能满足需求,请问大家有什么好的方法吗?
解决方案 »
- 关于重复记录的查询,如何只用查询语句搞定?
- ibatis配置文件里的 parameterClass是干什么用的?
- sql server2005数据表导入oracle数据库的问题
- 企业级应用::oracle 主从数据库技术已经到了什么程度??
- 请教高手! 10gR2登陆iSQL*Plus问题
- 问一个orcale触发器的问题
- oracle连接
- 初级问题:为什么在编译java程序的时候出现oracle.jdbc.driver不存在?
- 通过dblink的查询会占用回滚段吗?
- 在XP下安装Oracle9.0失败
- 怎么使用ORACLE存储过程实现JDBC的数组插入(在线等)
- =================动态sql into 数组=================
但是一条出库记录需要执行N次update入库记录,这就很有问题。
建议摆在ERP系统上,改好数据后一次更新。
一个是库存表 主要字段如下
商品CD 最小管理CD 剩余数量 还有一个库存明细表
管理CD 商品CD 日期 数量 已使用数量 原价入库操作的时候写入库存明细表,更新库存表
出库操作的时候更新库存明细表和库存表如果索引合适的话应该不会太慢的