2017-01-13 96 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)