2016-03-02 86 views
0

我有一段代碼更新列值,但它給了我錯誤:選擇列名稱基於變量名更新值

UPDATE #Cal SET @Curr = @2YD where Day = 'D-3WD' 

我嘗試使用EXEC命令:

SELECT @sql = "UPDATE #Cal SET " + @Cur + " = " + @2YD + "where Day = 'D-2WD'" 
EXEC @sql 

但我得到以下錯誤:

Syntax error during implicit conversion of VARCHAR value 'where Day = 'D-2WD'' to a DATE field.

它爲什麼試圖將值轉換爲日期字段?

+0

因此,沒有,當你明確地執行該語句錯誤發生,或僅在動態創建的語句? –

+0

編譯時發生,不進入EXEC –

+0

'SELECT @sql =「UPDATE #CAL SET」+ @Cur +「=」+ @ 2YD +「where Day ='D-2WD'」 EXEC @ sql' – Meet

回答

0

嘗試顯式轉換:

SELECT @sql = "UPDATE #Cal SET " + convert (varchar(25),@Cur) + " = " + convert (varchar(25),@2YD) + "where Day = 'D-2W