机械类生产计划与BOM生成物料相关需求的存储过程(向大家请教如何修改)
表结构(测试方案)
生产计划 scjh
scjh, xsdd,cpbh,jhsl(生产计划,销售订单、产品编号,计划数量)
测试记录
(scjh083001,xsdd083001,cpbh000001,300.00)
产品结构bom
cpbh,gybh,wlbh,sl,shl(产品编号,工艺编号,物料/半成品编号,数量,损耗率)
测试记录
理想情况下认为对半成品的数量需求为1,损耗率为0
(cpbh000001,gybh000001,cpbh000002,1,0)
(cpbh000001,gybh000001,wlbh000001,3,0.02)
(cpbh000002,gybh000002,cpbh000003,1,0)
(cpbh000002,gybh000002,wlbh000002,4,0.02)
(cpbh000003,gybh000003,wlbh000003,4,0.02)
相关需求xgxq
Scjh,xsdd,cpbh,wlbh ,xqsl(生产计划,销售订单,产品编号,物料编号,需求数量)
产品、半成品命名规则一样,如cpbh000001,物料编号,wlbh000001
create proc p(@scbh varchar(10),@xsdd varchar(10),@cpbh varchar(10),@jhsl decimal(18,2))
as
declare @cpbh1 varchar(10),@cpbh2 varchar(10),@sl decimal(18,2),@shl decimal(18,2)
declare @wlbh varchar(10)
@cpbh2 = @cpbh
do
declare cur cursor for
select bom.cpbh,bom.wlbh,bom.sl,bom,shl
from bom
where bom.cpbh=@cpbh
open cur
fetch next from cur into @cpbh1,@wlbh,@sl,@shl
while @@fetch_status=0
begin
if left(@wlbh,2)== 'wl '
begin
insert into xgxq(scbh,xsdd,cpbh,wlbh,xqsl) values (@scbh,@xsdd,@cpbh2,@wlbh,@jhsl*@sl*@shl)
@cpbh=@wlbh
end
else
begin
@cpbh=@wlbh
end
fetch next from cur into @cpbh1,@wlbh,@sl,@shl
end
close cur
deallocate cur
while left(@cpbh,2)== 'cp '
go
错误:
服务器: 消息 170,级别 15,状态 1,过程 p,行 5
第 5 行: '@cpbh2 ' 附近有语法错误。
服务器: 消息 137,级别 15,状态 1,过程 p,行 12
必须声明变量 '@wlbh '。
服务器: 消息 137,级别 15,状态 1,过程 p,行 15
必须声明变量 '@wlbh '。
服务器: 消息 137,级别 15,状态 1,过程 p,行 17
必须声明变量 '@wlbh '。
服务器: 消息 137,级别 15,状态 1,过程 p,行 24
必须声明变量 '@wlbh '。
服务器: 消息 170,级别 15,状态 1,过程 p,行 28
第 28 行: '= ' 附近有语法错误。
请高手帮忙看看@wlbh变量我声明了,怎么出错呢
还有其他的错误请高手帮忙看看
------解决方案--------------------不行的,用while ()循环,可以這樣寫
while
(
....
if left(@cpbh,2)= 'cp '
break
)