BEGIN...END (Transact-SQL)

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

含括一系列的 Transact-SQL 陳述式,以便執行一組 Transact-SQL 陳述式。 BEGIN 和 END 是流程控制語言關鍵字。

Transact-SQL 語法慣例

Syntax

BEGIN  
    { sql_statement | statement_block }   
END  

注意

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

引數

{ sql_statement | statement_block }
這是利用陳述式區塊來定義的任何有效 Transact-SQL 陳述式或陳述式分組。

備註

BEGIN...END 區塊可以有巢狀結構。

雖然 BEGIN...END 區塊中所有的 Transact-SQL 陳述式都是有效的,但某些 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  
/*  
Rolled back the transaction.  
*/  

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

在以下範例中,BEGINEND 會定義一系列同時執行的 SQL 陳述式。 如果未包含 BEGIN...END 區塊,則下列範例將處於持續不斷的迴圈狀態。

-- Uses AdventureWorks  

DECLARE @Iteration Integer = 0;
WHILE @Iteration <10  
BEGIN  
    SELECT FirstName, MiddleName   
    FROM dbo.DimCustomer WHERE LastName = 'Adams';
    SET @Iteration += 1  ;
END;

另請參閱

ALTER TRIGGER (Transact-SQL)
流程控制語言 (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
END (BEGIN...END) (Transact-SQL)