sql 存储过程将nvarchar的值转化为int失败

假设有存储过程:proc_test2
create proc proc_test2
@Id int
begin
as
declare @sql varchar(max)
@sql = 'select * from test2 where 1=1'
if @Id <> 0
set @sql += ' and Id = ' +@Id
exec (@sql)
end

存储过程需要的参数是int类型,按道理直接传值(+@Id)是没有问题的,但是在执行存储过程的时候,却弹出
“sql 在将 nvarchar 值 转换成数据类型 int 时失败。”
这时候你需要转换一下就ok了!

正解是:set @sql += ' and Id = ' +Cast(@Id as nvarchar(50))

猜你喜欢

转载自sistercry89.iteye.com/blog/2158344