共用方式為


BEGIN...END (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲

封入一系列的 Transact-SQL 語句,讓一組 Transact-SQL 語句可以在程式代碼的邏輯區塊中執行。 BEGINEND 是流程控制語言關鍵詞。

Transact-SQL 語法慣例

Syntax

BEGIN
    { sql_statement | statement_block }
END

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

{ sql_statement | statement_block}

使用語句區塊所定義的任何有效 Transact-SQL 語句或語句群組。

備註

BEGIN...END 區塊可以是巢狀的。

雖然所有 Transact-SQL 語句在區塊內 BEGIN...END 都是有效的,但某些 Transact-SQL 語句不應該在同一批或語句區塊內群組在一起。

範例

在下列範例中,BEGINEND 會定義一系列同時執行的 Transact-SQL 陳述式。 BEGIN...END如果未包含 區塊,則這兩個ROLLBACK TRANSACTION語句都會執行,而且會傳回這兩PRINT個訊息。

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

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

在以下範例中,BEGINEND 會定義一系列同時執行的 SQL 陳述式。 BEGIN...END如果未包含 區塊,下列範例會在連續迴圈中執行。

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

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

    SET @Iteration += 1;
END;