Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies to: 
 SQL Server 
 Azure SQL Database 
 Azure SQL Managed Instance 
 Azure Synapse Analytics 
 Analytics Platform System (PDW) 
 SQL analytics endpoint in Microsoft Fabric 
 Warehouse in Microsoft Fabric 
 SQL database in Microsoft Fabric Preview
Encloses a series of Transact-SQL statements so that a group of Transact-SQL statements can be executed in a logical block of code. BEGIN and END are control-of-flow language keywords.
 Transact-SQL syntax conventions
Syntax
BEGIN
    { sql_statement | statement_block }
END
Arguments
{ sql_statement | statement_block }
Any valid Transact-SQL statement or statement grouping as defined by using a statement block.
Remarks
BEGIN...END blocks can be nested.
Although all Transact-SQL statements are valid within a BEGIN...END block, certain Transact-SQL statements shouldn't be grouped together within the same batch, or statement block.
Examples
In the following example, BEGIN and END define a series of Transact-SQL statements that execute together. If the BEGIN...END block isn't included, both ROLLBACK TRANSACTION statements would execute, and both PRINT messages would be returned.
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
Examples: Azure Synapse Analytics and Analytics Platform System (PDW)
In the following example, BEGIN and END define a series of SQL statements that run together. If the BEGIN...END block isn't included, the following example runs in a continuous loop.
-- Uses AdventureWorksDW
DECLARE @Iteration INT = 0;
WHILE @Iteration < 10
BEGIN
    SELECT FirstName,
        MiddleName
    FROM dbo.DimCustomer
    WHERE LastName = 'Adams';
    SET @Iteration += 1;
END;