Share via


BEGIN...END (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt 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. BEGINet END sont des mot clé 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;