Compartilhar via


BEGIN...END (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureAzure Synapse AnalyticsPDW (Analytics Platform System)Ponto de extremidade de SQL no Microsoft FabricWarehouse no Microsoft Fabric

Inclui uma série de instruções Transact-SQL para que um grupo de instruções Transact-SQL possa ser executado em um bloco lógico de código. BEGIN e END são palavras-chave de linguagem de controle de fluxo.

Convenções de sintaxe de Transact-SQL

Sintaxe

BEGIN
    { sql_statement | statement_block }
END

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

{ sql_statement | statement_block}

Qualquer instrução Transact-SQL válida ou agrupamento de instruções conforme definido usando um bloco de instrução.

Comentários

BEGIN...END blocos podem ser aninhados.

Embora todas as instruções Transact-SQL sejam válidas dentro de um BEGIN...END bloco, certas instruções Transact-SQL não devem ser agrupadas no mesmo lote ou bloco de instruções.

Exemplos

No exemplo a seguir, BEGIN e END definem uma série de instruções Transact-SQL que são executadas em conjunto. Se o BEGIN...END bloco não for incluído, ambas as ROLLBACK TRANSACTION instruções serão executadas e ambas as PRINT mensagens serão retornadas.

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

Exemplos: Azure Synapse Analytics e PDW (Analytics Platform System)

No exemplo a seguir, BEGIN e END definem uma série de instruções do SQL que são executadas em conjunto. Se o BEGIN...END bloco não estiver incluído, o exemplo a seguir será executado em um loop contínuo.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

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

    SET @Iteration += 1;
END;