【发布时间】:2012-06-15 14:33:04
【问题描述】:
我想在不需要创建查询本身的 exec 中使用变量值。 我将在我的数据库的一个字段中存储一个查询,我只想使用该存储过程中的参数来执行它。对于下面的示例,我声明了两个变量@ValueVariable 是存储过程的参数,而我声明的@QueryString 是我将从数据库中读取的变量,我想使用@ValueVariable 的值来执行它。
DECLARE @ValueVariable int=0
@QueryString VARCHAR(MAX)=
'SELECT UserName FROM TableUser WHERE UserId=@ValueVariable'
EXEC(@QueryString)
当我尝试执行时,在“SELECT UserName FROM TableUser WHERE UserId=@ValueVariable”附近出现错误语法错误
我知道我可以做到这一点
@QueryString VARCHAR(MAX)=
'SELECT UserName FROM TableUser WHERE UserId='+@ValueVariable
但我想如上所述使用它。不在我的过程中进行查询,而是使用从 DB 检索到的字符串中的变量值。
那么有什么方法可以让我在当前环境中使用变量中的值来执行它。
【问题讨论】:
-
如果你想要参数化动态sql,使用
sp_executesql -
@Dems - 您应该将其发布为答案