Вопрос

Я не понимаю, почему следующее выдает мне ошибку.Я думал, что это связано с закомментированным разделом, но @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
Это было полезно?

Решение

Вот почему:

-- This works just fine:
BEGIN
  -- You must have an exec before your sp_executesql or it will not work in a block
  exec sp_executesql N'SELECT ''td'''
END

Вы не можете просто вызвать сохраненный процесс без исполнительный когда вы находитесь в блоке.

Другие советы

Почему вы заключили это в BEGIN ?..КОНЕЦ?Запустив внешний sp_executesql, блок будет работать.

При желании вы можете поместить исполнительный перед sp_executesql.

В некоторых случаях мне также приходилось использовать master:

exec master..sp_executesql 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top