Freigeben über


BEGIN...END (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Schließt eine Reihe von Transact-SQL-Anweisungen ein, sodass eine Gruppe von Transact-SQL-Anweisungen in einem logischen Codeblock ausgeführt werden kann. BEGINund END sind Steuerungs-of-Flow-Sprache Schlüsselwort (keyword)s.

Transact-SQL-Syntaxkonventionen

Syntax

BEGIN
    { sql_statement | statement_block }
END

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

{ sql_statement | statement_block}

Jede gültige Transact-SQL-Anweisung oder -Anweisung, die mithilfe eines Anweisungsblocks definiert ist.

Hinweise

BEGIN...END Blöcke können geschachtelt werden.

Obwohl alle Transact-SQL-Anweisungen innerhalb eines BEGIN...END Blocks gültig sind, sollten bestimmte Transact-SQL-Anweisungen nicht innerhalb desselben Batch- oder Anweisungsblocks gruppiert werden.

Beispiele

Im folgenden Beispiel wird durch BEGIN und END eine Reihe von Transact-SQL-Anweisungen definiert, die gemeinsam ausgeführt werden. Wenn der BEGIN...END Block nicht enthalten ist, werden beide ROLLBACK TRANSACTION Anweisungen ausgeführt, und beide PRINT Nachrichten werden zurückgegeben.

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

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

Im folgenden Beispiel wird durch BEGIN und END eine Reihe von SQL-Anweisungen definiert, die gemeinsam ausgeführt werden. Wenn der BEGIN...END Block nicht enthalten ist, wird das folgende Beispiel in einer fortlaufenden Schleife ausgeführt.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

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

    SET @Iteration += 1;
END;