sp_executesql语法错误



我正在尝试学习和使用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"附近的语法不正确。

不能将where子句作为参数。

我建议你阅读MVP Erland Sommarskog关于这个主题的文章的这一部分,以及整篇文章。

您可以在没有参数的情况下实现这一点,即使这不是一个好主意,也可以直接将附加到SQL字符串中

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

相关内容

  • 没有找到相关文章

最新更新