Sentencia BEGIN END en Transact SQL
El BEGIN END son estructuras de control de flujo para contener varias sentencias agrupadas en un bloque de código determinado. En definitiva, permiten ejecutar una serie de instrucciones en conjunto.
Los BEGIN END pueden anidarse en un bloque de código.
Es recomendable acostumbrarse al uso de BEGIN END, incluso en instrucciones únicas cuando trabajamos con estructuras de control de flujo.
La sintaxis es muy sencilla:
BEGIN
[codigo]
END
Veamos un ejemplo sencillo con un fragmento de código que genera un bucle:
Ejemplo BEGIN…END
DECLARE @iter INT = 1;
WHILE @iter <= 10
BEGIN
SELECT @iter as iter
SET @iter = @iter + 1
END
La variable @iter
ira incrementándose en uno por cada vuelta del bucle hasta que adquiera el valor @iter= 10
, último valor válido en la expresión del bucle WHILE
. Esto se traduce en que el resultado de ejecución pintara por pantalla diez veces la variable @iter
empezando por el valor inicial de 1 y terminando por el valor de 10.
Para entender mejor cómo funciona la agrupación de código, instamos a probar el mismo código anterior eliminando las estructuras de control de flujo BEGIN END.
DECLARE @iter INT = 1;
WHILE @iter <= 10
SELECT @iter as iter
SET @iter = @iter + 1
Veremos que al no agruparse las sentencias, nuestro código queda atrapado en un bucle infinito mostrando como resultado de ejecución 1 de manera constante en cada vuelta.
A continuación, veremos un ejemplo de BEGIN END anidados, modificando el código anterior:
DECLARE @iter INT = 1;
WHILE @iter <= 10
BEGIN
SELECT @iter as iter
IF @iter = 3
BEGIN
SELECT ('INFO REGISTRATION:') AS INFO;
SELECT nombre,
apellidos,
producto,
precio
FROM Clientes
INNER JOIN Pedidos
ON Clientes.idClientes = Pedidos.idClientes
WHERE Clientes.idClientes = @iter
END
SET @iter = @iter + 1
END
La ejecución irá pintando el valor de la variable @iter
de 1 a 10 como en el caso anterior, pero cuando adquiera el valor de 3, el código entrara por el IF ejecutando las instrucciones de la agrupación del nuevo bloque BEGIN END, el cual mostrará un mensaje de información y devolverá el valor de los campos: nombre
, apellidos
, producto
y precio
de las tablas Clientes
y Pedidos
para el idPedidos = 3
.