标签:
假设有存储过程: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))
sql 在将 nvarchar 值 转换成数据类型 int 时失败。
标签:
原文地址:http://www.cnblogs.com/XACOOL/p/5649380.html