Partager via


BEGIN...END (Transact-SQL)

S’applique à : point de terminaison d’analytique SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL Analytics dans Microsoft Fabric Warehouse dans Microsoft Fabric

Place une série d’instructions Transact-SQL afin qu’un groupe d’instructions Transact-SQL puisse être exécuté dans un bloc logique de code. BEGIN et END sont des mots clés de langage de contrôle de flux.

Conventions de la syntaxe Transact-SQL

Syntaxe

BEGIN
    { sql_statement | statement_block }
END

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

{ sql_statement | statement_block}

Toute instruction Transact-SQL valide ou regroupement d’instructions tel que défini à l’aide d’un bloc d’instructions.

Notes

BEGIN...END les blocs peuvent être imbriqués.

Bien que toutes les instructions Transact-SQL soient valides dans un BEGIN...END bloc, certaines instructions Transact-SQL ne doivent pas être regroupées dans le même lot ou dans le même bloc d’instructions.

Exemples

Dans l'exemple suivant, BEGIN et END délimitent une série d'instructions Transact-SQL qui sont exécutées ensemble. Si le BEGIN...END bloc n’est pas inclus, les deux ROLLBACK TRANSACTION instructions s’exécutent et les deux PRINT messages sont retournés.

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

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

Dans l’exemple suivant, BEGIN et END définissent une série d’instructions SQL qui s’exécutent ensemble. Si le BEGIN...END bloc n’est pas inclus, l’exemple suivant s’exécute dans une boucle continue.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

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

    SET @Iteration += 1;
END;