ALTER PROCEDURE dbo.FavoriteTotalCost
(
    @UserID nvarchar(10),
    @tblname nvarchar(50),
    @TotalCost money OUTPUT
)
AS
declare @CoutCost1 money
declare @CoutCost2 money
declare @ss varchar(500)begin
set @ss = 'select '+Convert(varchar,@CoutCost1)+' = (select SUM(a.Price * b.GoodsQuantity) from '+@tblname+' b,tbl_TaoCanProduct a where b.UserID = '+@UserID+' and a.ID = b.GoodsID)'
exec(@ss)
endbegin
set @ss = 'select '+Convert(varchar,@CoutCost2)+' = (SELECT SUM(a.Price1 * b.GoodsQuantity) FROM '+@tblname+' b,tbl_product a WHERE b.UserID = '+@UserID+' and a.ID = b.GoodsID)'
exec(@ss)
endif(@CoutCost1 <> 0 and @CoutCost2 <> 0)
set @TotalCost = @CoutCost1 + @CoutCost2
else
if @CoutCost1 <> 0
set @TotalCost = @CoutCost1
else
if @CoutCost2 <> 0
set @TotalCost = @CoutCost2

解决方案 »

  1.   

    改成这样试试
    if(@CoutCost1 <> 0 and @CoutCost2 <> 0)
    set @TotalCost = @CoutCost1 + @CoutCost2
    else
    begin
    if @CoutCost1 <> 0
    set @TotalCost = @CoutCost1
    else
                  begin
    if @CoutCost2 <> 0
    set @TotalCost = @CoutCost2
                  end
    end
      

  2.   

    --tryALTER PROCEDURE dbo.FavoriteTotalCost
    (
        @UserID nvarchar(10),
        @tblname nvarchar(50),
        @TotalCost money OUTPUT
    )
    AS
    declare @CoutCost1 money
    declare @CoutCost2 money
    declare @sql nvarchar(200),@sql1 NVARCHAR(200)begin
    set @sql=N'select @CoutCost1= SUM(a.Price * b.GoodsQuantity) from '+@tblname+' b,tbl_TaoCanProduct a where b.UserID = '+@UserID+' and a.ID = b.GoodsID '
    exec sp_executesql @sql,N'@CoutCost1 money output',@CoutCost1 output
    endbegin
    set @sql1=N'select @CoutCost2=SUM(a.Price1 * b.GoodsQuantity) FROM '+@tblname+' b,tbl_product a WHERE b.UserID = '+@UserID+' and a.ID = b.GoodsID'
    exec sp_executesql @sql1,N'@CoutCost2 money output',@CoutCost2 output
    endif(@CoutCost1 <> 0 and @CoutCost2 <> 0)
    set @TotalCost = @CoutCost1 + @CoutCost2
    else
    if @CoutCost1 <> 0
    set @TotalCost = @CoutCost1
    else
    if @CoutCost2 <> 0
    set @TotalCost = @CoutCost2