使用sp_executesql时列名无效

sel*_*lva 2 sql sql-server-2005

当我尝试在存储过程中执行动态查询时,我收到错误.

我的代码是:

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 = '+@AllowanceBadge
            EXEC SP_EXECUTESQL @Query
Run Code Online (Sandbox Code Playgroud)

我收到了以下错误

消息207,级别16,状态1,行1
无效的列名称'SIP0980'.

告诉我我哪里错了.

谢谢

Ole*_*Dok 5

需要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 = '''+@AllowanceBadge+''''
            EXEC SP_EXECUTESQL @Query
Run Code Online (Sandbox Code Playgroud)