【问题标题】:sp_executesql syntax errorsp_executesql 语法错误
【发布时间】:2014-04-10 15:52:39
【问题描述】:

我正在尝试学习和使用sp_executesql,即使是这个简单的 SQL 语句,我也被困住了。

DECLARE @sql NVARCHAR(MAX) = NULL
DECLARE @WHERE NVARCHAR(MAX) = NULL

SET @sql = N'
    SELECT
        *
    FROM
        MyTable
        @WHERE'

SET @WHERE = ISNULL(' WHERE ' + @WHERE, '');

EXECUTE sp_executesql 
    @statement = @sql
    , @params = N'@WHERE nvarchar(MAX)'
    , @WHERE = @WHERE;

我收到此错误,但不知道为什么...

消息 102,第 15 级,状态 1,第 6 行
'@WHERE' 附近的语法不正确。

【问题讨论】:

    标签: tsql sql-server-2008-r2 sp-executesql


    【解决方案1】:

    您不能将 where 子句作为参数。

    我建议您阅读 MVP Erland Sommarskog 关于该主题的文章的this 部分,以及整篇文章。

    您可以在没有参数的情况下完成这项工作,即使这不是一个好主意,也可以直接附加到您的 SQL 字符串:

    DECLARE @sql NVARCHAR(MAX) = NULL
    DECLARE @WHERE NVARCHAR(MAX) = NULL
    
    SET @sql = N'SELECT * FROM MyTable' + ISNULL(' WHERE ' + @WHERE, '');
    
    EXECUTE sp_executesql @sql
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2012-07-16
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      相关资源
      最近更新 更多