Dela via


BEGIN...END (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Omsluter en serie Transact-SQL-instruktioner så att en grupp med Transact-SQL-instruktioner kan köras i ett logiskt kodblock. BEGIN och END är nyckelord för flödesstyre.

Transact-SQL syntaxkonventioner

Syntax

BEGIN
    { sql_statement | statement_block }
END

Arguments

{ sql_statement | statement_block }

Alla giltiga Transact-SQL-instruktion eller -instruktionsgruppering enligt definitionen med hjälp av ett instruktionsblock.

Remarks

BEGIN...END block kan kapslas.

Även om alla Transact-SQL-instruktioner är giltiga inom ett BEGIN...END block bör vissa Transact-SQL-instruktioner inte grupperas i samma batch eller instruktionsblock.

Examples

I följande exempel BEGIN och END definiera en serie Transact-SQL-instruktioner som körs tillsammans. Om blocket inte ingår körs båda ROLLBACK TRANSACTION uttrycken BEGIN...END och båda PRINT meddelandena returneras.

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

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

I följande exempel definierar BEGIN du END en serie SQL-instruktioner som körs tillsammans. Om blocket BEGIN...END inte ingår körs följande exempel i en kontinuerlig loop.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

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

    SET @Iteration += 1;
END;