Поделиться через


BEGIN...END (Transact-SQL)

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

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

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

Syntax

BEGIN
    { sql_statement | statement_block }
END

Arguments

{ sql_statement | statement_block }

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

Remarks

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

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

Examples

В следующем примере ключевые слова 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;