SQL Server2008创建无参存储过程

          将原有的SQL查询语句改为使用存储过程来实现!原有SQL如下:
--StorageDetail 原料入库表, shipmentdetail 原料出库表, RawMaterInfo原料信息表 (原料名称 RmName为主键)

select a.物料名称 , a.总入库数 , a.总退货数 , a.总补回数 , a.总出库数 , a.库存数 库存数或该时间段进出差值,
f.Model 型号 , f.Remarks 备注 , f.unit 单位 from
(select d.物料名称  , d.总入库数 , d.总退货数 总退货数, d.总补回数 总补回数,  isnull(e.总出库数 , 0) 总出库数 ,
((d.总入库数 - ISNULL(e.总出库数 , 0) -  isnull(d.总退货数, 0) +    isnull(d.总补回数, 0)))  库存数  from
(select SUM(isnull(Inputcnt , 0)) 总入库数 , SUM(isnull(returncnt , 0)) 总退货数 , SUM(isnull(backcnt , 0)) 总补回数 , RmName 物料名称
from StorageDetail where 1 = 1  group by RmName  ) as d 
left join( select SUM( isnull (outcnt , 0)) 总出库数 , RmName 物料名称 from [shipmentdetail] group by RmName) as e
 on d.物料名称 = e.物料名称 ) as a ,(  select *  from RawMaterInfo) as f where f.RawMaterName = a.物料名称
 查询的结果为:
接下来将改为存储过程来实现:
1.先创建一个存储过程
2.创建完成后修改名称,接下来就是写SQL语句了:
-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		
    
    
     
     
-- Create date: 
     
     
      
      
-- Description:	
      
      
       
       
-- =============================================
CREATE PROCEDURE querystock
	-- Add the parameters for the stored procedure here
	--<@Param1, sysname, @p1> 
       
       
        
         = 
        
        
          , --<@Param2, sysname, @p2> 
         
           = 
          
            AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here --StorageDetail 原料入库表, shipmentdetail 原料出库表, RawMaterInfo原料信息表 (原料名称 RmName为主键) --创建临时表 select * into #tmprmname from RawMaterInfo select SUM(isnull(Inputcnt , 0)) 总入库数 , SUM(isnull(returncnt , 0)) 总退货数 , SUM(isnull(backcnt , 0)) 总补回数 , RmName 物料名称 into #tmpinputcnt from StorageDetail group by RmName select SUM( isnull (outcnt , 0)) 总出库数 , RmName 物料名称 into #tmpoutcnt from [shipmentdetail] group by RmName --进行查询 select e.物料名称 , e.总入库数 , e.总退货数 , e.总补回数 , e.总出库数 , e.库存数 库存数或该时间段进出差值, f.Model 型号 , f.Remarks 备注 , f.unit 单位 from ( select a.物料名称 , a.总入库数 , a.总退货数 总退货数, a.总补回数 总补回数, isnull(b.总出库数 , 0) 总出库数 , ((a.总入库数 - ISNULL(b.总出库数 , 0) - isnull(a.总退货数, 0) + isnull(a.总补回数, 0))) 库存数 from #tmpinputcnt a left join #tmpoutcnt b on a.物料名称 = b.物料名称 ) as e , #tmprmname as f where e.物料名称 = f.RawMaterName --删除临时表 drop table #tmprmname drop table #tmpinputcnt drop table #tmpoutcnt END GO 
           
          
        
       
       
      
      
     
     
    
    

3执行.刚刚创建的存储过程,结果如下图

这是一个简单的存储过程而已,SQL语句如写的不好的地方,请大神指出,不胜感激!
测试数据地址:http://download.csdn.net/detail/gx_489587482/9593238    也可以自己建测试数据!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值