--请问下面的存储过程生成各临时表,再从临时表提取数据进行更新总表数据,用这种做法好呢,还是不生产临时表,用游标进行提取,那一种好一点,还是一样?set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go-- 存储过程名:dt_kcqtyCREATE PROCEDURE [dbo].[dt_kcqty]
@FNumber  Varchar(60)  --物料编码
ASSet nocount on
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Begin Transaction IF @FNumber = '' 
 Set @FNumber = '%'
ELSE 
  Set @FNumber = '%' + @FNumber + '%'Declare @qty int  --数量
Declare @scqty  int --生产未完成数量
Declare @fitemID Int        --物料内码
Declare @fqty int
Declare @fcommitqty int
Declare @wwqty int
Declare @cgzt int
Declare @wlll int
Declare @wfhl int
--创建临时表
select FNumber as 物料编号,FName as 物料名称,stock as 仓库,FQty as 库存数量,FBatchNo as 批号,
  FItemID as 物料内码,@wwqty as 委外未完成数量,@scqty as 生产未完成数量,@CGZT AS 采购在途量,@wlll as 未领料量,@wfhl as 未发货量
into #dt_kcqty from view_kcqty where  FNumber like '%'+@FNumber+'%' --创建委外生产在产临时表
select fitemid,sum(fqty-fcommitqty) as wwqty1 
into #dt_wwqty from icmo where fqty-fcommitqty>0 and fbillno like 'swd%' and fstatus=1 
group by fitemid
order by fitemid--创建生产在产临时表select fitemid,sum(fqty-fcommitqty) as scqty 
into #dt_scqty1 from icmo where fqty-fcommitqty>0 and fbillno like 'smd%' and fstatus=1 
group by fitemid
order by fitemid--创建采购在途临时表select ffullnumber,sum(FBaseQty-FStockQty) as cgzt
into #dt_cgzt2 from vwICBill_26 where FBaseQty-FStockQty>0 and fclose<>'Y' and fcancellation<>'Y'
group by ffullnumber--创建未领完料临时表
select fitemid2,sum(FAuxQtyMust - fstockqty) as wlll 
into #dt_wlllguo from View_PPBOM_Y02  where (FAuxQtyMust - fstockqty)>0 and ficmostatus='下达' 
group by fitemid2
order by fitemid2--创建未发货临时表select fitemlongnumber,sum(FAuxQty - FStockQty) as wfhl 
into #dt_ddwfhl from vwICBill_32 where  (FCancellation <> 'Y' and fclosestatus<>'y'  ) and FAuxQty - FStockQty>0
group by fitemlongnumber
order by fitemlongnumber
--通过各临时表更新总表数据update #dt_kcqty set #dt_kcqty.委外未完成数量=#dt_wwqty.wwqty1  from #dt_kcqty,#dt_wwqty where #dt_kcqty.物料内码=#dt_wwqty.fitemidupdate #dt_kcqty set #dt_kcqty.生产未完成数量=#dt_scqty1.scqty from #dt_kcqty,#dt_scqty1 where #dt_kcqty.物料内码=#dt_scqty1.FItemIDupdate #dt_kcqty set #dt_kcqty.采购在途量=#dt_cgzt2.cgzt from #dt_kcqty,#dt_cgzt2 where #dt_kcqty.物料编号=#dt_cgzt2.ffullnumberupdate #dt_kcqty set #dt_kcqty.未领料量=#dt_wlllguo.wlll from #dt_kcqty,#dt_wlllguo where #dt_kcqty.物料编号=#dt_wlllguo.fitemid2update #dt_kcqty set #dt_kcqty.未发货量=#dt_ddwfhl.wfhl from #dt_kcqty,#dt_ddwfhl where #dt_kcqty.物料编号=#dt_ddwfhl.fitemlongnumber--按总表生成报表:Select 物料编号,物料名称,仓库,库存数量,批号,委外未完成数量,生产未完成数量,采购在途量,未领料量,未发货量
From #dt_kcqty  
order by 物料编号 Commit Transaction
Set nocount off