Время от времени я вижу утверждения SQL Server, начинающиеся с точки с запятой ';' как ниже
;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
Обновление 1:
Обратите внимание, что я спрашиваю о ';' в начале заявлений. Этот вопрос не дублирует этот
Когда следует использовать точки с запятой в SQL Server?
Обновление 2:
Ответ на@MartinSmith имеет смысл.
Чтобы убедиться, что у нас есть полный ответ на этот пост, рассмотрите эту уважаемую статью:
http://www.sommarskog.se/error_handling/Part1.html#jumpTHROW
В этот момент вы можете сказать себе: он, должно быть, тянет мой ноги, действительно ли Microsoft называет команду; THROW? Разве это не просто БРОСИТЬ? Правда, если вы посмотрите его в Books Online, точка с запятой. Но точка с запятой должна быть там. Официально это терминатор для предыдущего оператора, но он не является обязательным и от каждого используют точки с запятой, чтобы прекратить выполнение своих T-SQL-инструкций.
Я согласен с ответом @MartinSmith, но кажется, что дело доходит до некоторых довольно экстремальных уровней.
Как правило, в хранимой процедуре THROW является выражением по собственной строке. Разработчики SQL просто не просто объединяют такие строки SQL и пропускают точку с запятой.
Для меня больше шансов, что люди случайно сбросили таблицу, чем смешение оператора "THROW" с другой строкой TSQL
Объясняется ли в приведенной цитате что-то чрезвычайное и редкое? или я здесь не хватает места?