SQL-сервер НАЧАЛО КОНЕЦ

В этом руководстве вы узнаете, как использовать оператор BEGIN…END для объединения набора операторов Transact-SQL в блок операторов.

Обзор оператора BEGIN…END

Оператор BEGIN…END используется для определения блока операторов. Блок операторов состоит из набора операторов SQL, которые выполняются вместе. Блок операторов также известен как пакет.

Другими словами, если операторы являются предложениями, оператор BEGIN…END позволяет определять абзацы.

Ниже показан синтаксис оператора BEGIN…END:

BEGIN
    { sql_statement | statement_block}
END

В этом синтаксисе вы помещаете набор операторов SQL между ключевыми словами BEGIN и END, например:

BEGIN
    SELECT
        product_id,
        product_name
    FROM
        production.products
    WHERE
        list_price > 100000;
    IF @@ROWCOUNT = 0
        PRINT 'No product with price greater than 100000 found';
END

Выход:

Пример SQL Server BEGIN END

Чтобы просмотреть сообщения, сгенерированные оператором PRINT, в SQL Server Management Studio необходимо щелкнуть вкладку Сообщения. По умолчанию вкладка Сообщения скрыта.

В этом примере:

  • Во-первых, у нас есть блок, начинающийся с ключевого слова BEGIN и заканчивающийся ключевым словом END.
    ключевое слово.
  • Во-вторых, внутри блока у нас есть оператор SELECT, который находит продукты, цены по прейскуранту которых превышают 100 000. Затем у нас есть оператор IF, который проверяет, возвращает ли запрос какой-либо продукт, и выводит сообщение, если продукт не возвращается.

Обратите внимание, что @@ROWCOUNT — это системная переменная, которая возвращает количество строк, затронутых последним предыдущим оператором.

Оператор BEGIN… END ограничивает логический блок операторов SQL. Мы часто используем BEGIN…END в начале и конце хранимой процедуры и функции. Но это не является строго необходимым.

Однако BEGIN…END требуется для операторов IF ELSE, WHILE и т. д., где необходимо объединить несколько операторов.

Вложенность НАЧАЛО… КОНЕЦ

Блок операторов может быть вложенным. Это просто означает, что вы можете поместить оператор BEGIN…END в другой оператор BEGIN… END.

Рассмотрим следующий пример:

BEGIN
    DECLARE @name VARCHAR(MAX);
    SELECT TOP 1
        @name = product_name
    FROM
        production.products
    ORDER BY
        list_price DESC;
    IF @@ROWCOUNT  0
    BEGIN
        PRINT 'The most expensive product is ' + @name
    END
    ELSE
    BEGIN
        PRINT 'No product found';
    END;
END

В этом примере мы использовали оператор BEGIN…END для обертывания всего блока операторов. Внутри этого блока мы также использовали BEGIN…END для оператора IF…ELSE.

В этом руководстве вы узнали об операторе SQL Server BEGIN…END, который позволяет объединять операторы Transact-SQL в блоки.

Мирослав С.

Автор статей, ИБ-специалист