Skip to content

Latest commit

 

History

History
107 lines (89 loc) · 3.94 KB

File metadata and controls

107 lines (89 loc) · 3.94 KB

title: "BEGIN...END (Transact-SQL) | Microsoft Docs" ms.custom: "" ms.date: "03/15/2017" ms.prod: "sql" ms.prod_service: "database-engine, sql-database, sql-data-warehouse, pdw" ms.service: "" ms.component: "t-sql|language-elements" ms.reviewer: "" ms.suite: "sql" ms.technology:

  • "database-engine" ms.tgt_pltfrm: "" ms.topic: "language-reference" f1_keywords:
  • "BEGIN"
  • "BEGIN_TSQL" dev_langs:
  • "TSQL" helpviewer_keywords:
  • "enclosing statements [SQL Server]"
  • "BEGIN statement"
  • "control-of-flow language [SQL Server], BEGIN...END statement"
  • "BEGIN...END keyword"
  • "grouping statements, BEGIN...END statement"
  • "executing Transact-SQL statements together [SQL Server]"
  • "statements [SQL Server], grouping" ms.assetid: fc2c7f76-f1f9-4f91-beef-bc8ef0da2feb caps.latest.revision: 30 author: "douglaslMS" ms.author: "douglasl" manager: "craigg" ms.workload: "Active" monikerRange: ">= aps-pdw-2016 || = azuresqldb-current || = azure-sqldw-latest || >= sql-server-2016 || = sqlallproducts-allversions"

BEGIN...END (Transact-SQL)

[!INCLUDEtsql-appliesto-ss2008-all-md]

Encloses a series of [!INCLUDEtsql] statements so that a group of [!INCLUDEtsql] 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 [!INCLUDEtsql] statement or statement grouping as defined by using a statement block.

Remarks

BEGIN...END blocks can be nested.

Although all [!INCLUDEtsql] statements are valid within a BEGIN...END block, certain [!INCLUDEtsql] 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 [!INCLUDEtsql] 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 [!INCLUDEDWsql] 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)