【问题标题】:Incorrect syntax near 'sp_executesql'“sp_executesql”附近​​的语法不正确
【发布时间】:2010-11-20 18:52:24
【问题描述】:

我不明白为什么以下内容给了我错误。我以为它与注释掉的部分有关,但@SQL 是 nvarchar(4000)。

BEGIN
  sp_executesql N'SELECT ''td'''
  --sp_executesql @SQL, N'@StartDate DateTime, @EndDate DateTime, @End2 DateTime, @Program varchar(4)', @StartDate, @EndDate, @End2, @Program
END

【问题讨论】:

    标签: sql sql-server-2005 tsql dynamic-sql


    【解决方案1】:

    在某些情况下,我也不得不使用 master:

    exec master..sp_executesql 
    

    【讨论】:

      【解决方案2】:

      为什么你把这个包含在 BEGIN ... END 中?在块外部运行 sp_executesql 将起作用。

      您可以选择在 sp_executesql 之前放置一个 exec

      【讨论】:

        【解决方案3】:

        这就是为什么:

        - 这工作得很好: 开始 -- 你必须在你的 sp_executesql 之前有一个 exec 否则它不会在一个块中工作 exec sp_executesql N'SELECT ''td''' 结尾

        当你在一个块中时,你不能只调用一个没有 exec 的存储过程。

        【讨论】:

        • 您可以在没有和 exec 的情况下调用存储过程,但前提是对存储过程的调用是块中唯一的语句。
        • 它必须是第一个语句,不一定是唯一的。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-19
        • 2015-12-12
        • 2013-12-16
        • 1970-01-01
        • 2018-08-14
        • 2011-03-11
        相关资源
        最近更新 更多