动态SQL在“+”附近显示“语法不正确”

时间:2013-10-07 12:32:00

标签: sql sql-server tsql dynamic-sql

我可能在这里非常愚蠢,但为什么这个简单的动态查询:

EXEC sp_executesql N'SELECT Id FROM dbo.Widgets WHERE Id = ' + 1;

"Incorrect syntax near '+'"

1 个答案:

答案 0 :(得分:3)

您不能将表达式表示为参数的一部分。并且你不应该以这种方式连接(想想SQL注入) - 你已经使用sp_executesql,为什么不使用正确的参数?

DECLARE @Id INT, @sql NVARCHAR(MAX);
SET @Id = 1; -- presumably this will come from elsewhere

SET @sql = N'SELECT Id FROM dbo.Widgets WHERE Id = @Id;';
EXEC sp_executesql @sql, N'@Id INT', @Id;