我可能在这里非常愚蠢,但为什么这个简单的动态查询:
EXEC sp_executesql N'SELECT Id FROM dbo.Widgets WHERE Id = ' + 1;
给"Incorrect syntax near '+'"
?
我可能在这里非常愚蠢,但为什么这个简单的动态查询:
EXEC sp_executesql N'SELECT Id FROM dbo.Widgets WHERE Id = ' + 1;
给"Incorrect syntax near '+'"
?
您不能将表达式表述为论点的一部分。而且你不应该以这种方式连接(想想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;