2015-06-21 73 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,''))