日期:2014-05-17  浏览次数:20395 次

exec带字符串变量如何处理
---sql在存储过程中,
declare @tbname varchar(10)
declare @value1 varchar(20)
declare @value2 varchar(20)
declare @value3 varchar(20)
declare @sqls varchar(1000)
set @value1='编码'
set @value2='名称'
set @value3='规格'
set @tbname='stock'
--set @sqls='insert into '+@tbname+'(value1,value2,value3) values(@value1,@@value2,@value3)'
set @sqls='update '+@tbname+' set value2=@value2,value3=@value3 where value1=@value1'
exec(@sqls)
提示结果都显
必须声明变量 '@value1','@value2'...
应该如果实现呢?

------解决方案--------------------
set @sqls='update '+@tbname+' set value2=@value2,value3=@value3 where value1=@value1'
应该这么写:
set @sqls='update '+@tbname+' set value2='''+@value2+''',value3='''+@value3+''' where value1='''+@value1+''''

------解决方案--------------------
你这种需要用参数化扩展存储过程执行
exec sp_executesql @sqls,N'@value1 varchar(20),@value2 varchar(20),@value3 varchar(20)',@value1,@value2,@value3