作者:shuntianpeng 时间: 2006-08-24 文档类型:原创 来自:蓝色理想
第 1 页 存储过程之BOM初探 [1] 第 2 页 存储过程之BOM初探 [2] 第 3 页 存储过程之BOM初探 [3] 第 4 页 存储过程之BOM初探 [4] 第 5 页 存储过程之BOM初探 [5]
库存状况如下:
订单状况:
A、B、C、D、M、B、B1、B2、D1、D2 D3、E、F实际库存情况见表storage,现要满足销售订单001需要各原材料多少?
如下存储过程完成以上要求:
代码拷贝框CREATE PROCEDURE EX_ORDERS /*本程序根据订单自动计算得出所需要采购的材料和应生产的产品数量*/ /*表BOM_need中layer=-1的即为要采购的材料或部件,其它的为要生产的产品*/ @order_num nvarchar(50) AS declare @layer int; declare @eee int BEGIN set @layer=0 set @eee=(select max(layer) from bom ) delete BOM_T delete BOM_need /*订单数量与仓库产品数量做差放入需求表 step1*/ insert into BOM_need (internel,need) select orders_mx.internel,orders_mx.counts-storage.available_q as need from orders_mx,storage where orders_mx.internel=storage.num and orders_mx.order_num=@order_num /*step2*/ while not(@layer>@eee) begin insert into BOM_T (internel,up_internel,layer,counts) select bom.internel,bom.up_internel,bom.layer,bom.counts*n.need as counts from bom,BOM_need as n where bom.up_internel in (select internel from BOM_need where layer=@layer) and bom.up_internel=n.internel insert into BOM_need (internel,need,layer) select b.internel,sum(b.counts)-s.available_q as counts,b.layer from BOM_T as b,storage as s where s.num=b.internel group by internel,layer,s.available_q delete BOM_T set @layer=@layer+1 end END GO [Ctrl+A 全部选择 然后拷贝]
出处:蓝色理想 责任编辑:moby
上一页 存储过程之BOM初探 [2] 下一页 存储过程之BOM初探 [4]
◎进入论坛网络编程版块参加讨论
蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。
特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。