根据BOM多级展开查找产品采购件,另外在EXCEL中做了一个宏来取数(需要修改连接数据库内容),可多次输入成品代码分别取出数据并保存
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go
create PROCEDURE [dbo].[aaa_BomExpand]
DECLARE @BOMMaxLevel smallint
DECLARE @BOMLevel smallint DECLARE @SelectRows int DECLARE @ParentBomID int DECLARE @ParentNeedQty decimal(28,14) DECLARE @ParentIndex int DECLARE @ParentItemID int DECLARE @ParentHaveMrp int DECLARE @ParentLevelString varchar(200) DECLARE @ParentBomLevel int DECLARE @ParentHistory int DECLARE @ExpandMode int DECLARE @FItemType int DECLARE @FBom int DECLARE @FMaterielType int DECLARE @FBomInterid int DECLARE @sHideDisabledMaterial varchar(50) DECLARE @sLongNumber varchar(50) SELECT @BOMMaxLevel = 50 SELECT @BOMLevel =0 SELECT @SelectRows = 0 SELECT @ExpandMode=0 --SET @Succeed=0 --SET @Reason='' SET @sLongNumber = '0' SELECT @sLongNumber = isnull(fvalue,'0') FROM t_systemprofile WHERE fkey = 'UseShortNumber' AND FCategory = 'IC' SET @sLongNumber = rtrim(@sLongNumber) SELECT @sHideDisabledMaterial = RTRIM(ISNULL(FValue,'0')) FROM t_SystemProfile WHERE FKey = 'HideDisabledMaterial' AND FCategory = 'IC' IF @ExpandLevel=0 SELECT @ExpandLevel=50 UPDATE #MutiParentItem SET FHaveMrp = 1 ------如果是特征类物料,展开到第一层为止 SELECT TOP 1 @FBomInterid=fbominterid , @ParentIndex=u1.FIndex,@ParentItemID=u1.Fitemid,@ParentNeedQty=u1.FNeedQty,@ParentBomLevel=u1.FBOMLevel, @ParentHaveMrp=u1.FHaveMrp,@ParentLevelString=u1.FLevelString,@ParentHistory=u1.FHistory ,@FItemType=u1.FItemType ,@FBom=u1.FBom,@FMaterielType=u1.FMaterielType FROM #MutiParentItem u1 ORDER BY FIndex DESC --系统参数“屏蔽BOM中的失效物料”为1,则只展开有效的子项物料 --过滤条件:v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay --含义:物料有效期间与参数时间区间有交集为有效 IF @sHideDisabledMaterial = '1' BEGIN IF @Order=0 BEGIN INSERT INTO #MutiParentItem(FEntryID ,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15) ) * CAST((( CAST( v2.FQty AS Decimal(28,15) ) / CAST(v1.FQty AS Decimal(28,15) ) )) AS Decimal(28,15)) FNeedQty, 1, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,0,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.Finterid=@FBomInterid AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID AND v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay ORDER BY v2.FEntryID END ELSE IF @order=1 BEGIN IF @sLongNumber = '0' INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, 1, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,0,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.Finterid=@FBomInterid AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID AND v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay ORDER BY t1.fnumber ELSE INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15) ))) AS Decimal(28,15) ) FNeedQty, 1, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,0,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.Finterid=@FBomInterid AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID AND v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay ORDER BY t1.fshortnumber END ELSE BEGIN INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, 1, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,0,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.Finterid=@FBomInterid AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID AND v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay ORDER BY t1.fname END END ELSE BEGIN IF @Order=0 BEGIN INSERT INTO #MutiParentItem(FEntryID ,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15)) / CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, 1, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,0,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.Finterid=@FBomInterid AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID ORDER BY v2.FEntryID END ELSE IF @order=1 BEGIN IF @sLongNumber = '0' INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, 1, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,0,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.Finterid=@FBomInterid AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID ORDER BY t1.fnumber ELSE INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, 1, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,0,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.Finterid=@FBomInterid AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID ORDER BY t1.fshortnumber END ELSE BEGIN INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, 1, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,0,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.Finterid=@FBomInterid AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID ORDER BY t1.fname END END SELECT @SelectRows = COUNT(*) FROM #MutiParentItem WHILE ( @BOMLevel < @BomMaxLevel AND @SelectRows >0 ) BEGIN SET @SelectRows = 0 SELECT TOP 1 @ParentIndex=u1.FIndex,@ParentItemID=u1.Fitemid,@ParentNeedQty=u1.FNeedQty,@ParentBomLevel=u1.FBOMLevel, @ParentHaveMrp=u1.FHaveMrp,@ParentLevelString=u1.FLevelString,@ParentHistory=u1.FHistory ,@FItemType=u1.FItemType ,@FBom=u1.FBom,@FMaterielType=u1.FMaterielType FROM #MutiParentItem u1 ORDER BY FIndex DESC -----只展开普通件和特征件,如果不是,停止展开此物料 IF @FMaterielType=372 OR @FMaterielType=373 OR @FMaterielType=374 OR @FMaterielType=376 SELECT @ParentHaveMrp =1 IF @ParentHaveMrp > 0 BEGIN INSERT INTO #Mutidata (FEntryID,fbominterid,FItemID,FNeedQty,FBomLevel,FItemType,FParentID,FHistory,FLevelString ,FBom,FMaterielType,FOperID) SELECT U1.FEntryID,u1.fbominterid, u1.FItemID,u1.FNeedQty,u1.FBomLevel,u1.FItemType,u1.FParentID,u1.FHistory,u1.FLevelString ,u1.FBom,u1.FMaterielType,u1.FOperID FROM #MutiParentItem u1 WHERE u1.FIndex = @ParentIndex Delete FROM #MutiParentItem WHERE FIndex = @ParentIndex END ELSE BEGIN UPDATE #MutiParentItem SET FHaveMrp = 1 WHERE FIndex = @ParentIndex ----展开并插入该物料的父项物料----------- SET @SelectRows = 0 ----增加计数器------------------------- SET @BomLevel = @ParentBomLevel + 1 ---限定展开层次 IF @BomLevel=@ExpandLevel SELECT @ParentHaveMrp =1 IF @sHideDisabledMaterial = '1' BEGIN IF @order=0 BEGIN INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, (@BomLevel) FBomLevel, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,@ParentHaveMrp,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.FitemiD=@ParentItemID AND v1.FUseStatus = 1072 AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID AND v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay ORDER BY v2.FEntryID END ELSE IF @order=1 BEGIN IF @sLongNumber = '0' INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, (@BomLevel) FBomLevel, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,@ParentHaveMrp,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.FitemiD=@ParentItemID AND v1.FUseStatus = 1072 AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID AND v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay ORDER BY t1.fnumber ELSE INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, (@BomLevel) FBomLevel, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,@ParentHaveMrp,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.FitemiD=@ParentItemID AND v1.FUseStatus = 1072 AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID AND v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay ORDER BY t1.fshortnumber END ELSE BEGIN INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15)) /CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, (@BomLevel) FBomLevel, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,@ParentHaveMrp,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.FitemiD=@ParentItemID AND v1.FUseStatus = 1072 AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID AND v2.FBeginDay <= @EndDay AND v2.FEndDay >= @BeginDay ORDER BY t1.fname END END ELSE BEGIN IF @order=0 BEGIN INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15) ) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, (@BomLevel) FBomLevel, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,@ParentHaveMrp,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.FitemiD=@ParentItemID AND v1.FUseStatus = 1072 AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID ORDER BY v2.FEntryID END ELSE IF @order=1 BEGIN IF @sLongNumber = '0' INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/ CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, (@BomLevel) FBomLevel, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,@ParentHaveMrp,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.FitemiD=@ParentItemID AND v1.FUseStatus = 1072 AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID ORDER BY t1.fnumber ELSE INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15))/CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, (@BomLevel) FBomLevel, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,@ParentHaveMrp,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.FitemiD=@ParentItemID AND v1.FUseStatus = 1072 AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID ORDER BY t1.fshortnumber END ELSE BEGIN INSERT INTO #MutiParentItem(FEntryID,fbominterid,FItemID,FNeedQty,FBOMLevel,FParentID,FItemType,FRate,FHistory,FHaveMrp,FBom,FMaterielType,FOperID) SELECT V2.FEntryID,v2.finterid, v2.FItemID, CAST(@ParentNeedQty AS Decimal(28,15)) * CAST(((CAST(v2.FQty AS Decimal(28,15)) /CAST(v1.FQty AS Decimal(28,15)))) AS Decimal(28,15)) FNeedQty, (@BomLevel) FBomLevel, @parentIndex FParentID,t1.FErpClsID FItemtype, v2.FQty / v1.FQty FRate,@ParentHistory ,@ParentHaveMrp,@FBom,v2.FMaterielType,v2.FOperID FROM ICBOM v1,ICBOMChild v2,t_ICItem t1 WHERE v1.FitemiD=@ParentItemID AND v1.FUseStatus = 1072 AND v2.Finterid = v1.FInterID AND v2.FItemID = t1.FItemID ORDER BY t1.fname END END END SELECT @SelectRows = Count(*) FROM #MutiParentItem END ---错误判断------------------------ --IF @BOMLevel >= 50 --BEGIN --SET @Succeed=1 --SET @Reason='BOM结构不安全,可能出现嵌套!BOM展开无法继续.' --END UPDATE #Mutidata SET FLevelString = REPLICATE('.', FBomLevel) + convert(varchar(4),FBomLevel) --select * from #Mutidata a,t_icitem b where a.fitemid=b.fitemid --下面这段语句是查询出来的数据,只查询前面几个字段,多数字段被我注销了(需要可自己修改) select a.FLevelString FLevel,b.fnumber FNumber,b.fname FName, k.FName as FErpClsName, a.FNeedQty FQty --b.FChartNumber AS FChartNumber,isnull(c.Fname,' ')+' ' FUnitID, --,d.FScrap,d.FMachinePos,isnull(e.Fname,' ')+' ' FMaterielType,(case d.FOperSN when 0 then '' else cast(d.FOperSN as varchar(255)) end) --FOperSN,isnull(f.Fname,' ')+' ' FOperID, isnull(g.FName,' ')+' ' FStockID,(case b.FIsKeyItem when 0 then '否' else '是' end) FIsKeyItem, (case h.FDeleted when 0 then '否' else --'是' end) FDeleted,d.FNote,isnull(i.fname,' ')+' ' FUseStatus,a.FitemID EditFitem, CASE WHEN (d.FBeginDay BETWEEN '1900-01-01' AND '2100-01-01') THEN 0 WHEN (d.FEndDay --BETWEEN '1900-01-01' AND '2100-01-01' ) THEN 0 WHEN ('1900-01-01' >= d.FBeginDay AND '2100-01-01' <= d.FEndDay) THEN 0 ELSE 1 END AS FAlterBackColor, '253, 223, --223' AS FBackColor, d.FBeginDay,d.FEndDay,d.FPercent,b.FQtyDecimal FInitDecimal,b.FQtyDecimal FQtyDecimal
--select a.FLevelString+' ' FLevel,b.fnumber+b.FModel FNumber,b.fname+' ' FName, k.FName+' ' as FErpClsName,b.FChartNumber AS FChartNumber,isnull(c.Fname,' ')+' ' FUnitID
into #TmpBOM from #Mutidata a inner join t_icitem b on a.fitemid=b.fitemid left outer join t_item c on b.funitid=c.fitemid inner join icbomchild d on a.FBomInterid=d.finterid and a.FItemID=d.FItemID and a.FOperID=d.FOperID AND a.FEntryID=d.FEntryID left outer join t_submessage e on d.FMaterielType=e.finterid left outer join t_submessage f on d.FOperID=f.finterid left outer join t_stock g on d.FStockID=g.FItemID inner join t_item h on b.fitemid=h.fitemid left outer join t_submessage i on b.fusestate=i.finterid inner join t_submessage k on b.FErpClsID = k.FinterID where a.FBOMLevel>0 and ferpclsid=1 order by a.FIndex desc -- ferpclsid=1代表采购件,可以去掉表示展开所有物料 select * from #TmpBOM drop table #Errors
|