Я завжди це роблю, коли розміщую тут або в 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;
Це не єдиний виняток із правила, але саме це я вважаю неінтуїтивним.