Почему этот синтаксический анализатор SQL выполнял этот недопустимый синтаксис? - PullRequest
0 голосов
/ 09 декабря 2011

У меня есть хранимая процедура в этой форме:

ALTER PROCEDURE [dbo].[fooBar]
(
)
AS
BEGIN
-- etc
RETURN  @Success
END

До этого она прекрасно работала с BEGIN и END, но после изменения чего-либо и возврата обратно отказаласьвыполнить, указывая на синтаксическую ошибку в последнем END (удаление следующего указывает на синтаксическую ошибку в первом операторе IF / BEGIN / .... внутри процедуры, и, таким образом, начинается ваша дикая погоня за погоней).

Поиск в официальной документации MSDN о синтаксисе BEGIN и END, используемых таким образом для конвертации хранимой процедуры, недопустим.(Удаление BEGIN и END решило проблему)

Вопрос: почему это произошло?

Компилятор пропустил эти BEGIN и END вначале, а потом его обнаружат?Есть ли некоторые вещи, которые компилятор SQL игнорирует?Это наследие?Это просто привередливый?Мне не хватает исправления?

Это SQL Server 10.50.1617

1 Ответ

1 голос
/ 09 декабря 2011

BEGIN / END идеально подходят для хранимой процедуры. Это явно указано в грамматике на странице документации, на которую вы ссылаетесь.

Запрещены скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...