Update-statement mit Inline SQL

Diese Syntax gibt mir eine ungültige Spalte. Alles, was ich tun möchte, ist, den Wert in die Tabelle einzufügen. Wie soll ich meine Syntax ändern, um es möglich zu machen? Dies ist der Fehler.

Msg 207, Stufe 16, Zustand 1, Zeile 1
Ungültiger Spaltenname 'Alpha12'.

Code:

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 

Du solltest deinem interpolierten varchar variables @vector mit einfachen Anführungszeichen entgehen und anstelle von update varchar @vector :

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

SQLFiddle

Ist es notwendig, Exec Dynamic SQL zu verwenden? Es ist riskant, weil es sql Injektion ermöglicht.

Warum nicht die Insert-statement normalerweise:

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