我可能在这里非常愚蠢,但为什么这个简单的动态查询:
EXEC sp_executesql N'SELECT Id FROM dbo.Widgets WHERE Id = ' + 1;
给"Incorrect syntax near '+'"
答案 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;