Tsql sp_executesql语法错误

Tsql sp_executesql语法错误,tsql,sql-server-2008-r2,sp-executesql,Tsql,Sql Server 2008 R2,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_

我正在尝试学习和使用
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

不能将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

不能将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

不能将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