Share via


BEGIN...END (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)Endpoint di analisi SQL in Microsoft FabricWarehouse in Microsoft Fabric

Racchiude una serie di istruzioni Transact-SQL in modo che un gruppo di istruzioni Transact-SQL possa essere eseguito in un blocco logico di codice. BEGIN e END sono parole chiave del linguaggio di controllo del flusso.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

BEGIN
    { sql_statement | statement_block }
END

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

{ sql_statement | statement_block }

Qualsiasi istruzione Transact-SQL valida o raggruppamento di istruzioni come definito tramite un blocco di istruzioni.

Osservazioni:

BEGIN...END i blocchi possono essere annidati.

Anche se tutte le istruzioni Transact-SQL sono valide all'interno di un BEGIN...END blocco, alcune istruzioni Transact-SQL non devono essere raggruppate all'interno dello stesso batch o blocco di istruzioni.

Esempi

Nell'esempio seguente BEGIN ed END definiscono una serie di istruzioni Transact-SQL eseguite insieme. Se il BEGIN...END blocco non è incluso, entrambe ROLLBACK TRANSACTION le istruzioni verranno eseguite e verranno restituiti entrambi i PRINT messaggi.

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

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

Nell'esempio seguente BEGIN ed END definiscono una serie di istruzioni SQL eseguite insieme. Se il BEGIN...END blocco non è incluso, l'esempio seguente viene eseguito in un ciclo continuo.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

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

    SET @Iteration += 1;
END;