2012-01-04 22 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,行
無效的列名稱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 2012-01-04 04:57:15