Compartir vía


BEGIN...END (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento 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

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;