Я всегда делаю это при публикации здесь или в StackOverflow, потому что для WITH
- поскольку ключевое слово перегружено - предыдущая команда требует завершающей точки с запятой. Если я вставлю пример кода, который использует CTE, неизбежно какой-то пользователь вставит его в существующий код, а предыдущий оператор не будет иметь точку с запятой. Таким образом, код нарушается, и я получаю жалобы, как:
Ваш код сломался! Я получил это сообщение об ошибке:
Incorrect syntax near 'WITH'
...
Хотя я хотел бы верить, что людям лучше всегда заканчивать свои утверждения точкой с запятой , я бы предпочел предупредить шум и просто всегда включать его. Некоторым людям это не нравится, но <shrug />
. Вы можете добавить столько точек с запятой до или после действительного выражения, сколько захотите. Это действительно:
;;;;SELECT 1;;;;;;;;;;;;SELECT 2;;;;;;;;SELECT 3;;;;;
Таким образом, нет никакого вреда в том, что есть дополнительная точка с запятой перед оператором, который по определению требует этого. Это безопаснее, даже если это не так красиво.
Это должно быть сформулировано странно, чтобы понять суть, но «не заканчивая действительный оператор точкой с запятой» фактически не рекомендуется с SQL Server 2008. Поэтому, как я описываю в посте блога, на который я ссылаюсь выше, даже в тех случаях, когда не нужно обходить ошибку, ее следует использовать везде, где допустимо. Вы можете увидеть это здесь:
http://msdn.microsoft.com/en-us/library/ms143729.aspx
(Поиск на последней странице "точка с запятой")
Конечно, это не был бы SQL Server, если бы не было исключений. Попробуй это:
BEGIN TRY;
SELECT 1/1;
END TRY;
BEGIN CATCH;
SELECT 1/1;
END CATCH;
Это не единственное исключение из правила, но я считаю его наиболее неинтуитивным.