BEGIN...END (Transact-SQL)
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
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
Note
To view Transact-SQL syntax for SQL Server 2014 (12.x) and earlier versions, see Previous versions documentation.
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;