动态sql语句插入问题

时间:2012-01-04 11:00:21

标签: sql-server

我创建了一个Temp表(#TempTable)。我想插入日期,但我得到一个错误。这是一个动态查询。

我试图从另一个表中获取日期并将日期插入临时表

只是为了确保你理解我给出一个例子的问题

DECLARE @OfferEndDateTime datetime
SELECT @OfferEndDateTime = getdate()-1
print @VOfferEndDateTime


DECLARE @SQL VarChar(1000)
SELECT @SQL ='INSERT INTO #TempTable '+
'SELECT D,Points,@OfferEndDateTime '
exec(@sql)

请告诉我出错的地方

2 个答案:

答案 0 :(得分:3)

将参数传递给动态sql

时,需要使用sp_executesql
exec sp_executesql @sql, N'@OfferEndDateTime datetime', @OfferEndDateTime=@OfferEndDateTime

答案 1 :(得分:1)

至少有三个问题:

  1. 变量需要在外面:
  2. SELECT @SQL ='INSERT INTO #TempTable '+
    'SELECT D,Points,' + @OfferEndDateTime
    
    1. 变量需要是varchar类型或类似的

    2. 什么是D,Points?它们没有在任何地方定义。如果它们是varchar值,则需要引用它们(使用“或”)用于此目的。


    3. 如果您需要使用parameter like datetime,则应使用sp_executesql。检查HERE以获取相关信息!