存储过程特殊字符转换
我用的sql server 2005,我写了个存储过程。
select @sql='select @FENGPROPET1=FENGPROPET,@FPROPETTYPE1=FPROPETTYPE,@FCODE1=FCODE FROM HBA010T Where FSUPER = 1 AND FPLANTYPE=02 and FNAME='+char(39) + @project+char(39)
exec sp_executesql @sql,N'@FENGPROPET1 varchar(40) output ,@FPROPETTYPE1 varchar(40) output,@FCODE1 varchar(40) output',@FENGPROPET1 output,@FPROPETTYPE1 output ,@FCODE1 output
但是当传递的参数@project='1-名字'时就会提示将 varchar 值 '*' 转换成数据类型 int 时失败,去掉'-'就没有错误了,这是为什么啊?怎么解决啊?希望高手指点下,感激涕零!
------解决方案--------------------传递的参数改为:@project='[1-名字]'试试
或
@project='1[-]名字'
------解决方案--------------------SQL code
declare @s nvarchar(4000)
select @sql=N'select @FENGPROPET1=FENGPROPET,@FPROPETTYPE1=FPROPETTYPE,@FCODE1=FCODE FROM HBA010T Where FSUPER = 1 AND FPLANTYPE=02 and FNAME='+char(39) + @project+char(39)