CREATE PROCEDURE [dbo].[rk_jq] 
    @billno varchar(30),--流水号
    @incode varchar(30),--商品编码
    @fname varchar(100),--商品名称
    @rsl numeric(18,4), --入库数量
    @rdj numeric(18,4)  --入库单价
--入库移动加权
ASDECLARE 
    @zsl numeric(18,4),
    @jqj numeric(18,4),
    @zje numeric(18,4),
    @xssl numeric(18,6),
    @xsje numeric(18,6),
    @sql nvarchar(4000)set @zsl=0
set @zje=0set @sql='SELECT TOP 1 @zsl=zsl,@jqj=jqj,@zje=zje  FROM djk djk WHERE (incode = @incode)  ORDER BY id DESC'
exec sp_executesql @sql,N' @incode varchar(30),@zsl numeric(18,6),@jqj numeric(18,6),@zje numeric(18,6) output',@incode=@incode,@zsl=@zsl,@jqj=@jqj,@zje=@zje output  set @sql='delete from djk  where incode=@incode  and fname=@fname  and billno=@billno'
  exec sp_executesql @sql,N' @incode varchar(30),@fname varchar(100),@billno varchar(30) output',@incode=@incode,@fname=@fname,@billno=@billno outputif @zsl>0 --此处有问题吧。两次的入库没有加在一起呢?
begin
  set @sql='INSERT  INTO djk(billno,incode,fname,rsl,rdj,rje,csl, cdj, cje, zsl, jqj, zje)
  VALUES (@billno,@incode,@fname,@rsl,@rdj,@rsl*@rdj,0,0,0, (@zsl + @rsl), (@zje + @rsl*@rdj) / (@zsl + @rsl),(@zsl + @rsl)*(@zje + @rsl*@rdj) / (@zsl +@rsl)) '
  exec sp_executesql @sql,N' @billno varchar(30), @incode varchar(30),@fname varchar(100),@rsl numeric(18,4),@zsl numeric(18,4),@zje numeric(18,4),@rdj numeric(18,4) output',@billno=@billno,@incode=@incode,@fname=@fname,@zsl=@zsl,@zje=@zje,@rsl=@rsl,@rdj=@rdj output
end
else
begin
  set @sql='INSERT  INTO djk(billno,incode,fname,rsl,rdj,rje,csl, cdj, cje, zsl, jqj, zje)
  VALUES (@billno,@incode,@fname,@rsl,@rdj,@rsl*@rdj,0,0,0, @rsl, @rdj , @rsl* @rdj ) '
  exec sp_executesql @sql,N' @billno varchar(30), @incode varchar(30),@fname varchar(100),@rsl numeric(18,4),@rdj numeric(18,4) output',@billno=@billno,@incode=@incode,@fname=@fname,@rsl=@rsl,@rdj=@rdj output
endset @sql='SELECT @xssl=sum(csl),@xsje=sum(cje) FROM djk where incode=@incode'
exec sp_executesql  @sql ,N'   @incode varchar(30),@xssl numeric(18,6),@xsje numeric(18,6) output', @incode=@incode,@xssl=@xssl,@xsje=@xsje output
GO