日期:2014-05-18 浏览次数:20836 次
alter PROCEDURE [dbo].[LD_UpdateWater](
@freenum int
)
AS
declare
@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
改成 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