Compartir a través de


BEGIN...END (Transact-SQL)

Se aplica a: punto de conexión de SQL Server Azure SQL Database Azure SQL Instancia administrada punto de conexión de SQL Analytics Analytics Platform System (PDW) de SQL Analytics System (PDW) de SQL Server en Microsoft Fabric Warehouse en Microsoft Fabric

Incluye una serie de instrucciones Transact-SQL para que se pueda ejecutar un grupo de instrucciones Transact-SQL en un bloque lógico de código. BEGIN y END son palabras clave de lenguaje de control de flujo.

Convenciones de sintaxis de Transact-SQL

Sintaxis

BEGIN
    { sql_statement | statement_block }
END

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

{ sql_statement | statement_block}

Cualquier instrucción transact-SQL válida o agrupación de instrucciones tal como se define mediante un bloque de instrucciones.

Comentarios

BEGIN...END los bloques se pueden anidar.

Aunque todas las instrucciones Transact-SQL son válidas dentro de un BEGIN...END bloque, ciertas instrucciones Transact-SQL no deben agruparse dentro del mismo lote o bloque de instrucciones.

Ejemplos

En el siguiente ejemplo, BEGIN y END definen un conjunto de instrucciones Transact-SQL que se ejecutan juntas. Si el BEGIN...END bloque no está incluido, ambas ROLLBACK TRANSACTION instrucciones se ejecutarían y se devolverán ambos PRINT mensajes.

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

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

En el siguiente ejemplo, BEGIN y END definen un conjunto de instrucciones SQL que se ejecutan juntas. Si el BEGIN...END bloque no está incluido, el ejemplo siguiente se ejecuta en un bucle continuo.

-- Uses AdventureWorksDW

DECLARE @Iteration INT = 0;

WHILE @Iteration < 10
BEGIN
    SELECT FirstName,
        MiddleName
    FROM dbo.DimCustomer
    WHERE LastName = 'Adams';

    SET @Iteration += 1;
END;