2016-03-02 90 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