server sql 无法从long转为int_sql server存储过程中 转换成数据类型 int 时失败,是怎么回事?...

下面是存储过程:declare@BMHchar(16),@inThreeYearsAgodecimal(18,2),@inTwoYearsAgodecimal(18,2),@inLastYeardecimal(18,2),@outThreeYearsAgodecimal(18,2),@outTwoYearsAgodecim...

下面是存储过程:

declare @BMH char(16),

@inThreeYearsAgo decimal(18,2),

@inTwoYearsAgo decimal(18,2),

@inLastYear decimal(18,2),

@outThreeYearsAgo decimal(18,2),

@outTwoYearsAgo decimal(18,2),

@outLastYear decimal(18,2),

@sql char(1000)

set @sql='

delete from cw.dbo.CBMselect;

insert into cw.dbo.CBMselect (BMH,BMM,FZR) select distinct a.BMH,a.BMM,a.FZR from cwbackup.dbo.CBM a where a.TZ=45 and a.BMH like 8 order by a.BMH;

DECLARE cbm_cursor CURSOR FOR

select BMH from cwbackup.dbo.CBMtemp;

OPEN cbm_cursor;

FETCH NEXT FROM cbm_cursor

INTO '+@BMH+';

WHILE '+@@FETCH_STATUS+' = 0

BEGIN

select '+@inThreeYearsAgo+' = sum(b.N6),'+@outThreeYearsAgo+' = sum(b.N7) from cwbackup.dbo.cwmc2010 b where b.BMH='+@BMH+';

select '+@inTwoYearsAgo+' = sum(c.N6),'+@outTwoYearsAgo+' = sum(c.N7 )from cwbackup.dbo.cwmc2011 c where c.BMH='+@BMH+';

select '+@inLastYear+' = sum(d.N6),'+@outLastYear+' = sum(d.N7) from cwbackup.dbo.cwmc2012 where d.BMH='+@BMH+';

update cw.dbo.CBMselect set inThreeYearsAgo = '+@inThreeYearsAgo+',

inTwoYearsAgo = '+@inTwoYearsAgo+',

inLastYear = '+@inLastYear+',

outThreeYearsAgo = '+@outThreeYearsAgo+',

outTwoYearsAgo = '+@outTwoYearsAgo+',

outLastYear = '+@outLastYear+'

where BMH = '+@BMH+';

END

CLOSE cbm_cursor;

DEALLOCATE cbm_cursor

GO;'

exec(@sql);

下面是报错信息:

消息 245,级别 16,状态 1,第 11 行

在将 varchar 值 ' = 0

BEGIN

select ' 转换成数据类型 int 时失败。

怎样改正呢?

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值