Sql Storprocedure 的写法


/*Created By Bozhou in 2006/1/11 as Caculate Balance Qty*/
CREATE  procedure  sp_MKS_killPlan_qty
/*(     
                 @thisdayfrom DateTime,
                 @thisdayto DateTime,
                 @thisday     int
) */            
as

declare  @planqty float,@rcvqty float,@balanceqty float,@rowcount int,  @itemno varchar(20),  @thisdayfrom DateTime,@thisdayto DateTime, @thisday     int

create table #ITEM
(
 ITEM_NO nvarchar(50)
)

DECLARE SSItem_Cursor CURSOR FOR select ITEM_NO from #ITEM
begin

    ----串时间的起始时间
        if getdate() >cast(convert(nvarchar,getdate(),111)+' 08:00' as datetime)
 begin
  set @thisdayfrom=cast(convert(nvarchar,getdate(),111)+' 08:00' as datetime) 
  set @thisdayfrom=cast(convert(nvarchar,getdate()+1,111)+' 08:00' as datetime)
  set @thisday=Convert(Int,Convert(nvarchar,getdate(),112))
 end

        else
 begin
  set @thisdayfrom=cast(convert(nvarchar,getdate()-1,111)+' 08:00' as datetime) 
  set @thisdayfrom=cast(convert(nvarchar,getdate(),111)+' 08:00' as datetime)
  set @thisday=Convert(Int,Convert(nvarchar,getdate()-1,112))
 end
       
    ----串时间的结束时间


    --- BEGIN TRAN T1
       insert into #ITEM(ITEM_NO)  select ITEM_NO from C_MKS_ITEM_INUSE where status = 'Y'

      -- SELECT @count =count(*)  from C_MKS_ITEM_INUSE a left join C_MKS_ITEM_GROUP b
      -- on a.group_id = b.group_id where a.status = 'Y'
   
      

       OPEN SSItem_Cursor
      
     --  fetch first from SSItem_Cursor  into  @itemno


         FETCH NEXT FROM SSItem_Cursor  INTO @itemno
         WHILE (@@FETCH_STATUS = 0 )
begin
        
        -- print  @itemno
         --  if( @itemno is not null)
        --  begin
               select  @rcvqty=sum(RCV_QTY_H)  from I_MKS_ERP_RCV where RCV_TIME>=@thisdayfrom and RCV_TIME<@thisdayto
               and ITEM_NO=@itemno
       
               select  @planqty=sum(PLAN_QTY_H)   from I_MKS_ITEM_PLAN where ITEM_NO=@itemno 
                 and PLAN_TIME>=@thisdayfrom and PLAN_TIME<@thisdayto
       
                   if @rcvqty is null set @rcvqty=0
                   if @planqty is null set @planqty=0
       
                 set @balanceqty=@planqty-@rcvqty
       
                   select  @rowcount=count(*)  from H_MKS_ITEM_BALANCE where BALANCE_DATE=@thisday and  ITEM_NO=@itemno
                   if @rowcount>0
                   update H_MKS_ITEM_BALANCE set RCV_QTY=@rcvqty,PLAN_QTY=@planqty,BALANCE_QTY=@balanceqty
                   where ITEM_NO=@itemno and BALANCE_DATE=@thisday
                   else
                    insert into H_MKS_ITEM_BALANCE values(@itemno,@rcvqty,@planqty,@balanceqty,@thisday)

                 -- select @count = @count-1
    --     end

       -- COMMIT TRAN T1
        FETCH NEXT FROM SSItem_Cursor  INTO @itemno
end
        close SSItem_Cursor
        drop table #ITEM   
         insert into  C_MKS_SYS_LOG (JOB_TYPE,JOB_DESC, JOB_STATUS,CREATE_TIME)
         values('SP','计算Balance数量','Finished',getdate())
end

GO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值