2017-01-13 11 views
0

等号の左側に2つの宣言された文字列変数を結合しようとしています。これは可能ですか?私は何をしたいのかのための作業を見つけることができると思うが、次のコードはもっときれいになるだろう。等号の左側に宣言された文字列変数を結合する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

あなたはsp_executesqlを&パラメータを使用し、文字列を評価するためにそのように)(のexecを使用することはできませんが。達成したいことをより完全に説明する必要があります。 –

+3

の要件が明確でない – Stephen

+2

[MCVE](http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be -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) 
関連する問題