3

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

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

"Incorrect syntax near '+'"

?

4

1 回答 1

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;
于 2013-10-07T12:33:24.280 回答