單從上面的語句看沒有錯誤
可能是你傳值中有非字符數值
你可以用isdate(值)=1過濾下,然後處理

解决方案 »

  1.   

    declare @iSumAmount            decimal(10,2)
    declare @iExchangeMoney        NVARCHAR(10)
    declare @replace          NVARCHAR(10)if @iExchangeMoney is NULL
        set @iExchangeMoney='0'
    if @replace is NULL
        set @replace='0'--问题在这句:
    set @iSumAmount=convert(decimal(10,2),ltrim(rtrim(@iExchangeMoney)))+convert(decimal(10,2),ltrim(rtrim(@replace))) 
    /*
    The command(s) completed successfully.
    */
      

  2.   

    declare @iSumAmount            decimal(10,2) 
    declare @iExchangeMoney        NVARCHAR(10) 
    declare @replace          NVARCHAR(10) if isnumeric(@iExchangeMoney)=0 
        set @iExchangeMoney='0' 
    if isnumeric(@replace)=0
        set @replace='0' select @iExchangeMoney,@replace
    /*
    ---------- ----------
    0          0(1 行受影响)
    */
      

  3.   

    用 isnumeric(字段名)=0  来过滤
      

  4.   

    把convert 改为vast试试
    set @iSumAmount=(cast(ltrim(rtrim(isnull(@iExchangeMoney, '0'))) as numeric(10,2) )+cast(ltrim(rtrim(isnull(@replace, '0'))))as numeric(10,2))
    但我想或许这两种类型不一定能相互转换啊
      

  5.   

    谢谢,非常感谢!受上头几位回复的启发,找到问题了,问题出在是由于一个参数不为NULL,但为空格时引起的一个到Decimal无法转化的问题。