首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-05-16 
求助:将 varchar 转换为数据类型 numeric 时出现算术溢出错误。SQL codealter PROCEDURE [dbo].[LD_UpdateW

求助:将 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 -@freenum*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 acco_code=@acco_code;          update bs_cons_info set cons_money= @water_num * 2.4,money_left= @water_num * -2.4          where acco_code=@acco_code;        end else        begin          update bs_cons_info set cons_money = 0.0,money_left = 0.0 where acco_code=@acco_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

热点排行