Freigeben über


BEGIN...END (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL-Analyseendpunkt in Microsoft Fabric Warehouse in Microsoft Fabric SQL-Datenbank 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. BEGIN und END sind Schlüsselwörter zur Steuerung der Flusssprache.

Transact-SQL-Syntaxkonventionen

Syntax

BEGIN
    { sql_statement | statement_block }
END

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;