我不明白为什么以下内容给了我错误。我认为它与注释掉的部分有关,但@SQL 是 nvarchar(4000)。
BEGIN
sp_executesql N'SELECT ''td'''
--sp_executesql @SQL, N'@StartDate DateTime, @EndDate DateTime, @End2 DateTime, @Program varchar(4)', @StartDate, @EndDate, @End2, @Program
END
我不明白为什么以下内容给了我错误。我认为它与注释掉的部分有关,但@SQL 是 nvarchar(4000)。
BEGIN
sp_executesql N'SELECT ''td'''
--sp_executesql @SQL, N'@StartDate DateTime, @EndDate DateTime, @End2 DateTime, @Program varchar(4)', @StartDate, @EndDate, @End2, @Program
END
这就是为什么:
- 这工作得很好: 开始 -- 你必须在你的 sp_executesql 之前有一个 exec,否则它不会在一个块中工作 exec sp_executesql N'SELECT ''td''' 结尾
当你在一个块中时,你不能只调用一个没有exec的存储过程。
为什么你把这个包含在 BEGIN ... END 中?在块外部运行 sp_executesql 将起作用。
或者,您可以在 sp_executesql 之前放置一个exec 。
在某些情况下,我也必须使用 master:
exec master..sp_executesql