当前位置: 代码迷 >> Sql Server >> 将 varchar 转换为数据类型 numeric 时出现算术溢出异常
  详细解决方案

将 varchar 转换为数据类型 numeric 时出现算术溢出异常

热度:607   发布时间:2016-04-27 12:51:10.0
求助:将 varchar 转换为数据类型 numeric 时出现算术溢出错误。
SQL code
alter PROCEDURE [dbo].[LD_UpdateWater]( @freenum int)ASdeclare @acco_code varchar(10),--账户ID @water_num varchar(20),--s使用流量,对应meal_card_code字段 @cons_money money,--消费金额 @watersn int,--第一条记录sn @watersn2 int,--其他记录sn @moneyleft money,-- 第一条记录余额 @moneyleft1 money, --其他记录余额 @conswaternum varchar(10) --流量BEGIN    SET NOCOUNT ON;   --查询出采集一次的账户信息   declare cursor3 cursor for   select meal_card_code [email protected]*2,acco_code from bs_cons_info where acco_code in   (select acco_code from bs_cons_info group by acco_code having count(*)=1);   open cursor3;   fetch next from cursor3 into @water_num,@acco_code;   while @@fetch_status = 0     begin      --print(@water_num)       if convert(numeric(10,2),@water_num) > 0 --[color=#FF0000]此处出错[/color]        begin          update bs_cons_info set meal_card_code = meal_card_code - @freenum where [email protected]_code;          update bs_cons_info set cons_money= @water_num * 2.4,money_left= @water_num * -2.4          where [email protected]_code;        end else        begin          update bs_cons_info set cons_money = 0.0,money_left = 0.0 where [email protected]_code;        end     fetch next from cursor3 into @water_num,@acco_code    end    close cursor3;   deallocate cursor3;   end


------解决方案--------------------
SQL code
改成 if convert(numeric(20,2),@water_num) > 0
------解决方案--------------------
@water_num varchar(20), 你先输出下这个变量的值,可能超出了numeric(10,2)所能表示的数据范围
------解决方案--------------------
--print(@water_num) 
显示多少 ?
------解决方案--------------------
改成
 if convert(numeric(20,2),@water_num) > 0

  相关解决方案