Sentencias de control para SQL Server
En SQL se tiene los siguientes grupos de sentencias de control: Condicional Iterativo Secuencial
Condicional
Sentencia de control SQL Server
IF-THEN-ELSE
Permite la ejecucion de una o varias lineas de codigo segun una condicion. La consdicion se especifica en la clausula IF, si la condicion el verdadera ejecuta el codigo bajo la clausula THEN, caso contrario se ejecuta el codigo de la clausula ELSE.
Ejemplo
DECLARE @TotalProductos INT SELECT @TotalProductos = COUNT(*) FROM Products IF @TotalProductos > 100 PRINT 'Existen mas de 100 Productos' ELSE PRINT 'Existe menos de 100 Productos'
WHILE
Compara un valor y si es verdadero lo ejecuta.
Ejemplo:
DECLARE @Contador INT SET @Contador = 10 WHILE (@Contador > 0) BEGIN PRINT '@Contador =' + CONVERT (NVARCHAR, @Contador) SET @Contador = @Contador -1 END
CASE
Permite evaluar diferentes opciones, por cada opción se realiza una instrucción específica.
Ejemplo:
DECLARE @PAIS NVARCHAR(20) SELECT @PAIS = CASE 'PE' WHEN 'PE' THEN 'PERU' WHEN 'PE' THEN 'MEXICO' WHEN 'PE' THEN 'PISCO' ELSE 'No existe registro' END PRINT @PAIS
RETURN
Pone fin a la instrucción que se ejecuta
Ejemplo:
DECLARE @Contador INT SET @Contador = 10 WHILE (@Contador > 0) BEGIN PRINT '@Contador = ' + CONVERT(NVARCHAR,@Contador) SET @Contador = @Contador -1 IF (@Contador = 5) RETURN END PRINT 'FIN'
Iterativo
WHILE-LOOP
Permite la ejecución de una o varias instrucciones, la ejecución se define a partir de una condición.
Ejemplo:
DECLARE @site_value INT;
SET @site_value = 0;
WHILE @site_value <= 10
BEGIN
PRINT 'Inside WHILE LOOP on Ejemplo.com';
SET @site_value = @site_value + 1;
END;
PRINT 'Done WHILE LOOP on Ejemplo.com';
GO
Secuencial
GOTO
Permite cambiar la línea secuencial de la ejecución hacia una etiqueta. Las etiquetas son marcadas con los símbolos << y >>.
Ejemplo:
DECLARE @site_value INT;
SET @site_value = 0;
WHILE @site_value <= 10
BEGIN
IF @site_value = 2
GOTO Ejemplo;
SET @site_value = @site_value + 1;
END;
Ejemplo:
PRINT 'Ejemplo.com';
GO
Permiten cambiar el flujo de ejecución de las instrucciones de nuestro código, de esta manera se puede indicar la ejecución de un bloque de instrucciones cuando se cumpla una condición.
Bibliografía
1. https://techperu.wordpress.com/2012/03/26/transact-sql-sentencias-de-control-de-flujo-sql-server/ 2. https://jeanmazuelos.com/biblioteca/cursos/oracle-plsql-basico/capitulo-4-sentencias-de-control 3. https://www.techonthenet.com/sql_server/loops/while.php 4. https://www.techonthenet.com/sql_server/loops/goto.php 5. https://www.techonthenet.com/sql_server/index.php