Tsql Msg 207,级别16,状态1,对齐1无效列名';TRF3110WJS';

Tsql Msg 207,级别16,状态1,对齐1无效列名';TRF3110WJS';,tsql,sql-server-2008-r2,Tsql,Sql Server 2008 R2,我已经创建了一个触发器,可以在更新后将对象(笔记本电脑、PC、打印机等)的状态更改为booked 脚本使用动态sql(环境为sql Server 2008 R2): 当我触发此脚本抛出MASTER4表的更新时,出现以下错误: 消息207,16级,状态1,第1行 列的名称无效:“TRF3110WJS” 即使值“TRF3110WJS”不是列名,它也是一个列值 有什么支持的想法吗 注意:如果我认为表的名称是静态的而不是动态的,那么脚本工作得很好。问题在于创建更动态SQL的动态SQL SET @SQL

我已经创建了一个触发器,可以在更新后将对象(笔记本电脑、PC、打印机等)的状态更改为booked

脚本使用动态sql(环境为sql Server 2008 R2):

当我触发此脚本抛出MASTER4表的更新时,出现以下错误:

消息207,16级,状态1,第1行
列的名称无效:“TRF3110WJS”

即使值“TRF3110WJS”不是列名,它也是一个列值

有什么支持的想法吗


注意:如果我认为表的名称是静态的而不是动态的,那么脚本工作得很好。

问题在于创建更动态SQL的动态SQL

SET @SQL = @SQL + N'SET @sql= @sql + N''WHERE Num__UGLJ_ro__bde__bs__UGLJ_rie ='' +  CAST(@variable as varchar(128)) + '' and STATUS = '''''' + @stock_status + '''''''' + @CRLF' +@CRLF
SET @SQL = @SQL + N'SET @sql= @sql + N''WHERE Num__UGLJ_ro__bde__bs__UGLJ_rie ='''''' +  CAST(@variable as varchar(128)) + '''''' and STATUS = '''''' + @stock_status + '''''''' + @CRLF' +@CRLF
你需要更多的报价

CAST(@variable as varchar(128))
一点

我想这个应该可以

SET @SQL = @SQL + N'SET @sql= @sql + N''WHERE Num__UGLJ_ro__bde__bs__UGLJ_rie ='''''' +  CAST(@variable as varchar(128)) + '''''' and STATUS = '''''' + @stock_status + '''''''' + @CRLF' +@CRLF