从BOM中按照物料查找所有用到此物料的产成品

  此问题接上一个日志,根据BOM资料,按照采购件物料查找到所有用到此物料的产成品,这里又建立个存储过程和一张表,下面存储过程是通过游标取出所有产成品的采购件,并插入到这个实体表,因为数据量比较大,所以在数据库建立了作业(设置的在半夜执行),先删除实体表数据,并重新执行存储过程插入新数据。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
 
create procedure [dbo].[aaa_BOM]
as
-------------------------------------------------------------
/* create table
 abc(
ID int NOT NULL IDENTITY (1, 1),
成品代码 varchar(100),
层级 varchar(30),
物料代码 varchar(100),
物料名称 varchar(100),
物料属性 varchar(10),
数量 decimal(28,13))
*/
declare FG cursor for
select  fnumber  from  t_icitem where fnumber like '01.%'
--此句是取所有产成品代码(本单位产成品是01类)
open FG
declare @fnumber varchar(100)
fetch next from FG into @fnumber
while @@fetch_status=0
begin
 insert into abc(层级,物料代码,物料名称,物料属性,数量) exec aaa_BomExpand @fnumber
 update abc set 成品代码 =@fnumber where 成品代码 is null
  fetch next from FG into @fnumber
end
close FG
deallocate FG
select * from abc
--drop table #abc
 
下面就可以在查询分析中自己写个语句把数据查出来了(虽然不是实时数据,总比一个一个查询快多了)
SELECT 物料代码,物料名称,成品代码,数量 FROM  abc 
WHERE    abc.物料代码>='*ItemNo*'
AND  abc.物料代码<='#ItemNo#'
转自: http://community.kingdee.com/pages/jstu/blog/archive/2010/08/10/476065.aspx

你可能感兴趣的:(金蝶K3二次开发,存储,null,数据库,作业,table,2010)