2017-10-29 5 views
0

私は誰の助けも必要です。 sp_executesqlから実行しているクエリからスカラー変数を割り当てようとしています。私のクエリは以下の通りです:sp_executesqlからスカラー変数を割り当てる

select @sql = N'Select @found = count(' [email protected]+ ') from ' [email protected]+ ' where 
       [email protected]+ ' = ''' [email protected]+''';'; 

EXECUTE sp_executesql @sql, N'@table nvarchar(max), @column nvarchar(max), 
       @temp_id nvarchar(max), @found int', 
       @table,@column,@temp_id,@found; 

クエリはすべてのエラーを得られません。 @foundにはクエリの結果が割り当てられませんでした。私も同じように設定しようとしました。誰でも質問に間違っていることを教えていただけますか?私はこれを一日中続けてきました。

私は得ることができるすべてのヘルプのためにあまりにも多くの事前に。

答えて

2

次のようにスクリプトがなります

DECLARE @found int; 

DECLARE @sql NVARCHAR(MAX) = 
    N'Select @found = count(' +QUOTENAME(@column)+ ') '+ 
    N'from ' +QUOTENAME(@table)+ ' '+ 
    N'where ' +QUOTENAME(@column)+ '[email protected];'; 

EXEC sp_executesql @sql, '@intVariable INT, @found INT OUTPUT', @intVariable, @found OUTPUT; 

これは、出力変数として@foundを持っています。これをパラメータ文字列に指定する場合と、パラメータをsp_executesqlに渡して値を出力する場合は、両方とも指定する必要があります。

また、オブジェクト名を適切にエスケープするためにQUOTENAME()も使用されます。

関連する問題