2016-09-07 13 views
0

私がしたいのは、変数@varでクエリの「単一の値の結果」を取得することです。クエリの出力はレコードセットではなく、単一の文字列値です。データは、このような何かを見てする必要があり、次のように変数への動的SQLの結果が必要

Declare @Var nvarchar(MAX) 
Declare @DynamicSQL nvarchar(MAX) 

BEGIN 
    SET @DynamicSQL = 'SELECT [CityName] from [TempTable]' 
    print @DynamicSQL 
END 

exec sp_executesql @DynamicSQL, N'@Var nvarchar(max) out', @Var out 

select @Var 
-- Returns String : 'Null' 
-- Expected Result: 'London,Nottingham,Birmingham,Manchester,Leeds,Blackpool' 

答えて

0

では、SQLステートメント内の出力変数を設定する必要がある「ロンドン、ノッティンガム、バーミンガム、マンチェスター、リーズ、ブラックプールを...。」:

SET @DynamicSQL = 'SELECT @Var = [CityName] from [TempTable]' 
+0

あなたがロックしているBeanFrog。正常に動作します。どうも。 – Nitin

0

まず、戻り値CityNameを動的SQLステートメントの変数@varに書き込む必要があります。変数は、他の行のために上書きされているよう

'SELECT @var = [CityName] from [TempTable]' 

結果は、その後、CityName列の最後の行のようになります。だから、行を連結する

enter image description here

、あなたが追加する必要があります各行の変数に次の行の結果を入力し、その間にカンマを追加します。それはあなたがそれを行う方法は次のとおりです。

'SELECT @var = [CityName] + @var + '','' from [TempTable]' 

は、次にあなたの出力であなたは、文字列内のすべての空のスペースを削除する必要があります。

-- remove empty spaces 
set @Var = REPLACE(@Var,' ','') 

-- remove last comma 
set @Var = LEFT(@Var,LEN(@Var)-1) 

select @Var 

結果は次のようになります。

enter image description here

+0

あなたの時間と労力をいただきありがとうございます。あなたのクエリーも便利です。どうも – Nitin

関連する問題