表 ClassSize中SizeId为INT
declare @ids nvarchar(20);
set @ids='93,94,95,96,97,94';
select * from ClassSize where SizeId
in (@ids)
我们看上去好像没有什么问题,却在执行的时候报错:
消息 245,级别 16,状态 1,第 3 行
在将 nvarchar 值 '93,94,95,96,97,94' 转换成数据类型 int 时失败。
这样执行当然出错,因为@ids是一个字符串,现在是以参数的形式传递。
解决办法:
select * from ClassSize where
SizeId in (@ids)
改为:
exec(select * from ClassSize where
SizeId in ('+@ids+')')
记住:一定要加exec执行函数.