Когда я должен использовать точки с запятой в SQL Server? - PullRequest
193 голосов
/ 02 апреля 2009

При проверке некоторого кода в Интернете и сценариев, генерируемых SQL Server Management Studio, я заметил, что некоторые операторы заканчиваются точкой с запятой.

Так, когда я должен использовать это?

Ответы [ 13 ]

0 голосов
/ 31 июля 2015

Примечание: это отвечает на вопрос в письменном виде, но не на проблему, как указано. Добавление здесь, так как люди будут искать это

Точка с запятой также используется перед WITH в рекурсивных операторах CTE:

;WITH Numbers AS
(
    SELECT n = 1
    UNION ALL
    SELECT n + 1
    FROM Numbers
    WHERE n+1 <= 10
)
SELECT n
FROM Numbers

Этот запрос сгенерирует CTE с именем Numbers, который состоит из целых чисел [1..10]. Это достигается созданием таблицы только со значением 1, а затем повторением до достижения значения 10.

0 голосов
/ 03 октября 2014

Точки с запятой не всегда работают в составных операторах SELECT.

Сравните эти две разные версии тривиального составного оператора SELECT.

код

DECLARE @Test varchar(35); 
SELECT @Test=
    (SELECT 
        (SELECT 
            (SELECT 'Semicolons do not always work fine.';););); 
SELECT @Test Test;

возвращает

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near ';'.

Однако код

DECLARE @Test varchar(35)
SELECT @Test=
    (SELECT 
        (SELECT 
            (SELECT 'Semicolons do not always work fine.'))) 
SELECT @Test Test

возвращает

Test
-----------------------------------
Semicolons do not always work fine.

(1 row(s) affected)
0 голосов
/ 18 августа 2012

При использовании оператора DISABLE или ENABLE TRIGGER в пакете, в котором есть другие операторы, оператор непосредственно перед ним должен заканчиваться точкой с запятой. В противном случае вы получите синтаксическую ошибку. Я сорвал свои волосы с этого ... И потом, я наткнулся на этот пункт MS Connect о том же. Он закрыт, так как не исправит.

см. здесь

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