Sql server 动态sql语句插入问题

Sql server 动态sql语句插入问题,sql-server,Sql Server,我已经创建了一个临时表。我正在尝试插入要获取的日期,但出现错误。这是一个动态查询 我试图从另一个表中获取日期,并将日期插入临时表 为了确保你理解这个问题,我举了一个例子 DECLARE @OfferEndDateTime datetime SELECT @OfferEndDateTime = getdate()-1 print @VOfferEndDateTime DECLARE @SQL VarChar(1000) SELECT @SQL ='INSERT INTO #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)

请告诉我哪里出了问题

将参数传递给动态sql时,您需要使用sp_executesql

exec sp_executesql @sql, N'@OfferEndDateTime datetime', @OfferEndDateTime=@OfferEndDateTime

向动态sql传递参数时,需要使用sp_executesql

exec sp_executesql @sql, N'@OfferEndDateTime datetime', @OfferEndDateTime=@OfferEndDateTime

你至少有三个问题:

  • 变量需要位于以下外部:
  • 变量必须是varchar类型或类似类型

  • 什么是
    D,点
    ?它们在任何地方都没有定义。如果它们是varchar值,您需要为此引用它们(使用“或”)



  • 如果需要使用datetime等
    参数,则应改用
    sp_executesql
    。查看相关信息!

    您至少有三个问题:

  • 变量需要位于以下外部:
  • 变量必须是varchar类型或类似类型

  • 什么是
    D,Points
    ?它们没有在任何地方定义。如果它们是varchar值,您需要为此引用它们(使用“或”)



  • 如果需要使用datetime等
    参数,则应改用
    sp_executesql
    。检查一些关于它的信息

    可能是@OfferEndDateTime应该在单引号之外。表示您必须将其连接到查询字符串可能是@OfferEndDateTime应该在单引号之外。表示您必须将其连接到查询字符串