2015-06-21 75 views
0

此语法不断给我一个无效的列。我想要做的就是将值插入表中。我应该如何改变我的语法才能使它成为可能?这是提供的错误。内联SQL更新声明

消息207,级别16,状态1,行1
无效的列名称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 
+0

我不知道你想通过反复回退的问题完成什么,但请停止它。 – meagar

回答

1

你应该逃脱你插varchar变量@vector用单引号和使用insert代替update声明:

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

SQLFiddle

+0

这消除了我收到的错误,但它不会将向量中的值存入我的表 –

+0

@BigPimpin:然后使用'insert'而不是'update'。查看更新演示。 – potashin

0

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

为什么不INSERT语句正常:

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