Время от времени я вижу утверждения SQL Server, которые начинаются с точки с запятой ';' как показано ниже';' в начале инструкций TSQL
;WITH cte
AS (SELECT ROW_NUMBER() OVER (PARTITION BY Col1, Col2, Col3
ORDER BY (SELECT 0)) RN
FROM #MyTable)
DELETE FROM cte
WHERE RN > 1
Другой пример ;THROW
Почему именно есть ';' начало заявлений TSQL
Update 1:
Пожалуйста, обратите внимание, что я спрашиваю о ';' в начале заявлений. Этот вопрос не дублируют этого одного
When should I use semicolons in SQL Server?
Update 2:
@MartinSmith ответ имеет смысл.
Просто, чтобы убедиться, что у нас есть полный ответ на этот пост, рассмотреть эту уважаемую статью:
http://www.sommarskog.se/error_handling/Part1.html#jumpTHROW
На этом этапе вы можете сказать себе: он должен быть потянув мои ноги , действительно ли Microsoft называет команду: THROW? Разве это не только THROW? Правда, если вы посмотрите его в Books Online, то нет точки с запятой . Но точка с запятой должна быть там. Официально это терминатор для предыдущего оператора, но он не является обязательным, а далеко от всех используют точки с запятой для завершения своих операторов T-SQL.
Я согласен с ответом @MartinSmith, но кажется, что дело доходит до некоторых довольно экстремальных уровней.
Как правило, в хранимой процедуре THROW является заявлением по собственной линии. Разработчики SQL просто не просто объединяют такие строки SQL и пропускают точку с запятой.
Для меня, есть больше шансов, люди случайно удалить таблицу, чем смешение заявления разбрасывались 'с другой линией TSQL
ли дело объяснено в цитате выше что-то экстремальное и редкого произойдет? или я упустил пункт здесь?
Благодарим вас за помощь. Можете ли вы поделиться своим, хотя и по моим обновленным комментариям? –
@AllanXu - Да, я согласен с вашими настроениями на '; THROW' - Эта практика - это только то, что я хотел бы рассмотреть для образцов кода в Интернете. Не что-то в моем собственном исходном коде. Как правильная вещь - просто убедиться, что вы завершаете предыдущие утверждения (и в идеале все заявления) с полуколонами. –