Megosztás a következőn keresztül:


KEZDŐDIK... VÉGE (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példányAzure Synapse AnalyticsElemzési platformrendszer (PDW)SQL Analytics-végpont a Microsoft FabricbenRaktár a Microsoft FabricbenSQL-adatbázis a Microsoft Fabricben

Egy sor Transact-SQL utasítást foglal magában, hogy a Transact-SQL utasítások egy csoportja végrehajtható legyen egy logikai kódblokkban. BEGIN és END a folyamatvezérlési nyelvi kulcsszavak.

Transact-SQL szintaxis konvenciók

Syntax

BEGIN
    { sql_statement | statement_block }
END

Arguments

{ sql_statement | statement_block }

Bármely érvényes Transact-SQL utasítás vagy utasításcsoportozás egy utasításblokk használatával definiálva.

Remarks

BEGIN...END blokkok beágyazhatók.

Bár az összes Transact-SQL utasítás érvényes egy BEGIN...END blokkon belül, bizonyos Transact-SQL utasítások nem csoportosíthatók ugyanabban a kötegben vagy utasításblokkban.

Examples

Az alábbi példában BEGINEND definiáljon egy Transact-SQL utasítássorozatot, amely együtt hajt végre. Ha a BEGIN...END blokk nem szerepel a fájlban, mindkét ROLLBACK TRANSACTION utasítás végrehajtva lesz, és mindkét PRINT üzenet vissza lesz adva.

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

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

Az alábbi példában BEGINEND definiáljon egy több, együtt futó SQL-utasítást. Ha a BEGIN...END blokk nem szerepel a fájlban, az alábbi példa folyamatos ciklusban fut.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

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

    SET @Iteration += 1;
END;