BEGIN…END (Transact-SQL)

**APPLIES TO:** ![yes](media/yes.png)SQL Server (starting with 2008) ![yes](media/yes.png)Azure SQL Database ![yes](media/yes.png)Azure SQL Data Warehouse ![yes](media/yes.png)Parallel Data Warehouse

Encloses a series of Transact\-SQL statements so that a group of Transact\-SQL Transact\-SQL statements can be executed. BEGIN and END are control-of-flow language keywords.

Topic link icon Transact-SQL Syntax Conventions

Syntax

BEGIN  
    { sql_statement | statement_block }   
END  

Arguments

{ sql_statement | statement_block }
Is 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 Transact\-SQL statements should not 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 were not included, both ROLLBACK TRANSACTION statements would execute and both PRINT messages would be returned.

USE AdventureWorks2012;  
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.  
*/  

Examples: [!INCLUDEssSDWfull] and [!INCLUDEssPDW]

In the following example, BEGIN and END define a series of SQL statements that run together. If the BEGIN...END block are not included, the following example will be in a continuous loop.

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

See Also

ALTER TRIGGER (Transact-SQL)
Control-of-Flow Language (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
END (BEGIN…END) (Transact-SQL)