日期:2014-05-18  浏览次数:20376 次

存储过程特殊字符转换
我用的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)