SQL Begin: Control de Flujo

La declaración SQL Begin se usa para marcar y especificar el comienzo de la transacción o procedimiento almacenado o funciones; la colección de múltiples declaraciones dentro del bloque lógico cuyo cuerpo comienza con la especificación de la palabra clave BEGIN y termina con el uso de palabra clave END. 

Se pueden escribir varias declaraciones con SQL BEGIN END dentro del mismo método o procedimiento almacenado, etc. Incluso podemos escribir declaraciones anidadas en SQL donde el bloque lógico de declaraciones definido entre las palabras clave BEGIN y END se puede ejecutar de forma condicional o dentro de los bucles. y otras funciones de acuerdo al caso de uso y requerimiento.

SQL Begin

En este artículo, aprenderemos sobre la sintaxis del uso de la palabra clave BEGIN en SQL y la palabra clave END que ayuda a crear un bloque lógico de instrucciones SQL con la ayuda de la sintaxis y algunos ejemplos.

Sintaxis de la declaración en SQL BEGIN END

La siguiente es la sintaxis del uso de la declaración SQL BEGIN, que se acompaña con END para la terminación del bloque de instrucciones:

BEGIN
-- CODIGO
END

El uso de BEGIN se realiza principalmente en Transacciones SQL, donde varias declaraciones se ejecutan completamente de manera transaccional para mantener la coherencia de las operaciones de la base de datos. Podemos mencionar las declaraciones que queremos ejecutar de manera transaccional dentro de las palabras clave BEGIN y END, como se muestra en la sintaxis anterior. Las declaraciones dentro de BEGIN y END también se conocen como el lote que se ejecuta en conjunto. 

Ejemplo en SQL BEGIN END con sentencias SQL

El primer ejemplo contiene la declaración básica en SQL BEGIN…END. El cuerpo del bloque contiene los comandos SQL: INSERTAR, ACTUALIZAR, ELIMINAR.

BEGIN
INSERT INTO EMPLEADOS(ID,NOMBRE,GENERO, AÑO, Sueldo)
VALUES (11,'KARINA', 'F', '22',2500);
UPDATE EMPLEADOS SET NOMBRE='ANA' WHERE id=9;
DELETE FROM EMPLEADOS WHERE NOMBRE ='Elis';
END;

 Con la instrucción BEGIN comienza la creación de un bloque, básicamente representa el punto de partida del bloque SQL. Con la sentencia END finaliza el bloque SQL, prácticamente END cierra BEGIN, representa el punto final del bloque SQL. Dentro del bloque SQL BEGIN END puede ejecutar sentencias SQL o T-SQL tales como: SELECT, INSERT, UPDATE, DELETE, ejecución de funciones y procedimientos.

Ejemplo de BEGIN…END con WHILE

El segundo ejemplo usa la instrucción SQL WHILE   dentro del bloque SQL BEGIN…END . En este bloque, la variable @contar se incrementa en 1 en cada iteración WHILE. Cuando @contar tendrá el valor 4, la declaración BREAK se usa para salir del bloque BEGIN…END y las iteraciones WHILE finalizan.

DECLARE @contar int
SET @contar = 1
WHILE @contar < 5
BEGIN
PRINT 'Prueba'
SET @contar = @contar+ 1
IF @contar = 4
BREAK
END

Ejemplo en BEGIN…END con TRY CATCH

El siguiente ejemplo usa la declaración SQL BEGIN…END junto con el bloque SQL TRY CATCH. En el cuerpo del bloque BEGIN TRY…END TRY, se genera el error, luego el error se maneja en el bloque BEGIN CATCH…END CATCH.

DECLARE @Numero TINYINT, @Resultado TINYINT
BEGIN TRY SET @Numero = 10;
SET @Resultado = @Numero / 0;
SELECT @Numero AS Número, @Resultado AS Resultado;
END
TRY BEGIN
CATCH
PRINT N'Mensage de Error= ' + ERROR_MESSAGE()

END CATCH

Ejemplos de Begin con la declaración IF

Usaremos la declaración SQL IF para verificar la condición de conteo de filas y colocaremos todas estas declaraciones dentro de BEGIN y END para convertirlas en un solo bloque lógico que consistirá en nuestras declaraciones como se muestra a continuación:

BEGIN
SELECT id, Nombre, Edad
FROM Empleado
WHERE Edad > 25
IF @@ROWCOUNT = 0
SELECT 'No Existen Empleado con Edad Mayor a 25'
END

El resultado de la ejecución de las declaraciones de consulta y el bloque anteriores es el siguiente:

Uso de palabras clave BEGIN y END anidadas

Podemos hacer uso de bloques BEGIN END anidados unos dentro de otros y crear diferentes bloques lógicos de instrucciones para ejecutar. La declaración con SQL BEGIN y END funcionan juntas en cualquier otro lenguaje. Podemos ejecutar estos bloques lógicos en función de algunas condiciones y también de forma repetitiva dentro de varias declaraciones de SQL Server.

Consideremos un ejemplo simple de bloques BEGIN END anidados en SQL que recuperarán los datos de los EMPLEADOS con sueldo mayor de 10000 de la consulta que recupera los sueldos de los empleados y almacena el datos que cumplen con la condición dentro de la variable denominada @Totalsueldo. si se cumple el recuento de filas del conjunto de resultados de la declaración de consulta mayor a 10000, Muestra todos los empleados con sueldo mayores a esta cantidad, si no se cumple ejecute otro bloque de BEGIN END que obtendrá el valor de cadena ‘No se encontraron Sueldo con montos superiores a $10000’ .

BEGIN
DECLARE @Totalsueldo INT;

BEGIN
SELECT @Totalsueldo = COUNT(*) 
FROM dbo.EMPLEADOS 
WHERE sueldo > 10000;

IF @Totalsueldo > 0
BEGIN
  BEGIN
-- Bloque anidado dentro del bloque interno
SELECT * 
FROM dbo.EMPLEADOS 
WHERE sueldo > 10000;
END;
END
ELSE
BEGIN
PRINT 'No se encontraron Sueldo con montos superiores a $10000.';
END
END;
END;

Conclusión

Podemos hacer uso de la palabra clave BEGIN en SQL para marcar el punto de inicio del bloque lógico de sentencias de transact SQL que necesitamos especificar y usar la palabra clave END para especificar el punto de cierre de un bloque lógico en SQL. Algunos puntos importantes a tener en cuenta al utilizar bloques BEGIN…END son:

  • Estructura básica con declaración BEGIN, instrucciones SQL y declaración END.
  • Control de flujo mediante estructuras condicionales como IF…ELSE, CASE, WHILE, etc.
  • Manejo de errores con estructura TRY…CATCH para capturar y controlar excepciones.
  • Uso de variables locales para almacenar y manipular valores temporales.
  • Posibilidad de anidar bloques BEGIN…END para estructurar el código de manera legible y modular.

Deja un comentario