2017-01-13 35 views
0

我想在等号左侧结合两个声明的字符串变量,这将使我能够选择我的变量将被调用的内容。这可能吗?我想我可以为自己想做的工作找到工作,但下面的代码会更清晰。SQL在等号左侧结合声明的字符串变量

这是我迄今为止,但它不工作:

DECLARE @operate VARCHAR(2000) 
DECLARE @date5 VARCHAR(6) 
DECLARE @month VARCHAR(2) 
SET @month=5 
SET @operate='(@date' [email protected]+ '=10)' 
EXEC(@operate) 
PRINT(@date5) 
+4

不能使用EXEC()这样评价一个字符串,可以使用sp_executesql的&参数。你应该更完整地解释你想完成的事情。 –

+3

要求不明确 – Stephen

+2

An [MCVE](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-tobe -a-very-simple-sql-query)在这里真的很有用。向我们展示起始值和所需输出。 –

回答

0

这确实你问什么,但我不禁觉得它不工作的最佳途径,可能是只是为未来存储维护头痛。尽管没有更多关于上下文的信息,但很难提出替代方案。考虑创建一个关于更高级别问题的方法和解决方法。我怀疑是否有更简单的方法将数据存储在表中?

它会假设所有@dateX变量是VARCHAR(6):

DECLARE @operate NVARCHAR(2000) 
DECLARE @params NVARCHAR(2000) 
DECLARE @date5 VARCHAR(6) 
DECLARE @month VARCHAR(2) 
SET @month=5 
SET @operate=N'set @date' + @month + '=10' 
SET @params=N'@date' + @month + ' varchar(6) OUTPUT' 
exec master.dbo.sp_ExecuteSQL @operate, @params, @[email protected] output 
PRINT(@date5)