BEGIN...END (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Заключает ряд инструкций Transact-SQL, чтобы группа инструкций Transact-SQL была выполнена в логический блок кода. BEGINи END являются ключевое слово языка управления.

Соглашения о синтаксисе Transact-SQL

Синтаксис

BEGIN
    { sql_statement | statement_block }
END

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

{ sql_statement | statement_block }

Любая допустимая инструкция Transact-SQL или группирование инструкций, определяемая с помощью блока инструкций.

Замечания

BEGIN...END Блоки можно вложить.

Хотя все инструкции Transact-SQL допустимы в блоке BEGIN...END , некоторые инструкции Transact-SQL не должны группироваться в одном пакете или блоке инструкций.

Примеры

В следующем примере ключевые слова BEGIN и END определяют ряд инструкций Transact-SQL, которые будут выполняться вместе. BEGIN...END Если блок не включен, оба ROLLBACK TRANSACTION оператора будут выполняться, и оба PRINT сообщения будут возвращены.

USE AdventureWorks2022;
GO

BEGIN TRANSACTION
GO

IF @@TRANCOUNT = 0
BEGIN
    SELECT FirstName, MiddleName
    FROM Person.Person
    WHERE LastName = 'Adams';

    ROLLBACK TRANSACTION;

    PRINT N'Rolling back the transaction two times would cause an error.';
END;

ROLLBACK TRANSACTION;

PRINT N'Rolled back the transaction.';
GO

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

В следующем примере BEGIN и END определите ряд инструкций SQL, которые выполняются вместе. BEGIN...END Если блок не включен, следующий пример выполняется в непрерывном цикле.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

WHILE @Iteration < 10
BEGIN
    SELECT FirstName,
        MiddleName
    FROM dbo.DimCustomer
    WHERE LastName = 'Adams';

    SET @Iteration += 1;
END;