内联更新语句 SQL

Update Statement with Inline SQL

这个语法总是给我一个无效的列。我想要做的就是将值插入 table。我应该如何更改我的语法以使其成为可能?这是出现的错误。

Msg 207, Level 16, State 1, Line 1
Invalid column name 'Alpha12'.

代码:

Declare @vector varchar(25), @sql varchar(max)
Set @vector = 'Alpha12'

Create Table #Test (vector varchar(50))     

Set @sql = 'Update  #Test '
       + 'set vector = coalesce(''' + @vector + ''', '''')'

Print @sql
Exec (@sql)

Select * from #Test

Drop Table #Test

您应该使用单引号转义您的内插 varchar 变量 @vector 并使用 insert 而不是 update 语句:

set @sql = 'insert into  #Test '
         + 'values (coalesce(''' + @vector + ''', ''''))'

SQLFiddle

有必要使用Exec动态SQL吗?这是有风险的,因为它会启用 sql 注入。

为什么Insert语句不能正常执行:

Insert into  #Test 
Values (Coalesce(@vector,''))