当前位置: 代码迷 >> Sql Server >> exec带字符串变量如何避免
  详细解决方案

exec带字符串变量如何避免

热度:91   发布时间:2016-04-24 23:03:16.0
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
  相关解决方案