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.
Transact-SQL Syntax Conventions
BEGIN
{ sql_statement | statement_block }
END
{ sql_statement | statement_block }
Is any valid Transact\-SQL statement or statement grouping as defined by using a statement block.
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.
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.
*/
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;
ALTER TRIGGER (Transact-SQL)
Control-of-Flow Language (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
END (BEGIN…END) (Transact-SQL)