2012-01-04 12 views
2

ストアドプロシージャ内で動的クエリを実行しようとすると、エラーが発生します。sp_executesqlを使用しているときに列名が無効

私のコードは次のとおりです。

DECLARE @Query nvarchar(max) 
DECLARE @AllowanceBadge nvarchar(20) 
DECLARE @AllowFieldName nvarchar(50) 
DECLARE @Amount Decimal 
SET @AllowanceBadge ='SIP0980' 
SET @AllowFieldName ='xxxxx' 
SET @Amount = 100 

SET @Query = 'UPDATE tbl_PayrollTransaction SET '+ @AllowFieldName +' = '+convert(varchar,@Amount) + 'WHERE BadgeNumber = '[email protected] 
      EXEC SP_EXECUTESQL @Query 

私はエラー

メッセージ207、レベル16、状態1、行1
無効な列名 'SIP0980' は次取得しています。

どこが間違っているか教えてください。

おかげ

答えて

4

は、はい、それは動作します...おかげで... SIP0890

DECLARE @Query nvarchar(max) 
DECLARE @AllowanceBadge nvarchar(20) 
DECLARE @AllowFieldName nvarchar(50) 
DECLARE @Amount Decimal 
SET @AllowanceBadge ='SIP0980' 
SET @AllowFieldName ='xxxxx' 
SET @Amount = 100 

SET @Query = 'UPDATE tbl_PayrollTransaction SET '+ @AllowFieldName +' = '+convert(varchar,@Amount) + 'WHERE BadgeNumber = '''[email protected]+'''' 
      EXEC SP_EXECUTESQL @Query 
+0

引用符で囲む必要があります。 – selva