2012-04-05 15 views
2

私のSQLクエリに問題があります。 EXECを使用してSQL文を実行する必要があります。列の1つはすでに変数で表されており、その列の値を別の変数に代入する必要があります。これを達成することができますか?もしそうなら、あなたはこれに対して他の解決策を提案できますか?EXEC Selectステートメントダイナミックカラムを使用して値を変数に格納

Googleからこのスニペットが見つかりました。しかし、これでも私に望ましい出力は得られません。

マイSQL文:

declare @i int, @j int =10 
exec sp_executesql N'select @i ='+ @j, N'@i int output', @i output 
select @i 

答えて

3

これは私のSQL Server 2005で動作します。

declare @i int, @j int 
    set @j =10 
    declare @sql nvarchar(max) 
    set @sql = 'select @i =' + str(@j) 
    exec sp_executesql @sql, N'@i int output', @i output 
    select @i 
+0

のthnxそれが動作するには..私はその違いが何であるかを知ることができますか?オハイオ州キャスティングの問題以外。 – itb564

+0

キャスティングでは、宣言で変数を初期化できません。また、sp_execute_sqlはexpressionをパラメータとして受け入れません。この場合、変数@sqlを送信する必要があります。 –

+0

SQL Server 2008およびそれ以降では、宣言内の変数を初期化できます。 – RBarryYoung

関連する問題