Категории: Все - estructuras - control - while - case

по Santiago Escobar 4 лет назад

448

Estructuras de control en Transact SQL

En el contexto de Transact SQL, las estructuras de control son fundamentales para dirigir el flujo de ejecución de las sentencias. Una de las estructuras más utilizadas es la condicional CASE, que permite evaluar una expresión y devolver distintos valores según las condiciones especificadas.

Estructuras de control en Transact SQL

Estructuras de control en Transact SQL

Estructura GOTO

desviar el flujo de ejecución hacia una etiqueta
DECLARE @divisor int,             @dividendo int,             @resultado int    SET @dividendo = 100     SET @divisor = 0     SET @resultado = @dividendo/@divisor                    IF @@ERROR > 0         GOTO error             PRINT 'No hay error'     RETURN error:     PRINT 'Se ha producido una division por cero'

Bucle WHILE

El bucle mientras expresion se evalue como verdadero
DECLARE @coRecibo int        WHILE  EXISTS (SELECT *                    FROM RECIBOS                    WHERE PENDIENTE = 'S')-- Ojo, la subconsulta se ejecuta -- una vez por cada iteracion -- del bucle!     BEGIN       SET @coRecibo = (SELECT TOP 1 CO_RECIBO FROM RECIBOS WHERE PENDIENTE = 'S')         UPDATE RECIBOS         SET PENDIENTE = 'N'         WHERE CO_RECIBO = @coRecibo     END
DECLARE @contador int     SET @contador = 0     WHILE (1 = 1)     BEGIN       SET @contador = @contador + 1 IF (@contador % 50 = 0)        BREAK     PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)     END
DECLARE @contador int     SET @contador = 0     WHILE (@contador < 100)     BEGIN       SET @contador = @contador + 1 IF (@contador % 2 = 0)        CONTINUE     PRINT 'Iteracion del bucle ' + cast(@contador AS varchar)     END
DECLARE @Web varchar(100), @diminutivo varchar(3) SET @diminutivo = ‘UISRAEL' SET @Web = (CASE @diminutivo WHEN ‘UISRAEL' THEN 'www.uisrael.edu.ec' WHEN ‘UTE' THEN 'www.ute.edu.ec' ELSE 'www.uisrael.edu.ec' END) PRINT @Web
WHILE BEGIN ... END

Estructura condicional CASE

Evaluar una expresion y devolver un valor u otro.
DECLARE @Web varchar(100),             @diminutivo varchar(3)    SET @diminutivo = 'DJK'     SET @Web = (CASE                     WHEN @diminutivo = ‘UISRAEL' THEN (SELECT  web                                                    FROM WEBS                                                    WHERE id=1)                     WHEN @diminutivo = ‘UTE' THEN (SELECT  web                                                    FROM WEBS                                                    WHERE id=2)                     ELSE 'www.uisrael.edu.ec'                 END)    PRINT @Web
CASE         WHEN = THEN         WHEN = THEN         ELSE -- Valor por defecto     END
DECLARE @Web varchar(100), @diminutivo varchar(3)    SET @diminutivo = ‘UISRAEL'     SET @Web = (CASE @diminutivo                     WHEN ‘UISRAEL' THEN 'www.uisrael.edu.ec'                     WHEN ‘UTE' THEN 'www.ute.edu.ec'                     ELSE 'www.uisrael.edu.ec'                 END)    PRINT @Web
CASE         WHEN THEN         WHEN THEN         ELSE -- Valor por defecto     END

Estructura condicional IF

Evaluar una expresion booleana (resultado SI - NO), y ejecutar las operaciones contenidas en el bloque formado por BEGIN END.
DECLARE @coPais int, @descripcion varchar(255) set @coPais = 5 set @descripcion = ‘USA’ IF EXISTS(SELECT * FROM PAISES WHERE CO_PAIS = @coPais) BEGIN UPDATE PAISES SET DESCRIPCION = @descripcion WHERE CO_PAIS = @coPais END ELSE BEGIN INSERT INTO PAISES (CO_PAIS, DESCRIPCION) VALUES (@coPais, @descripcion) END
DECLARE @Web varchar(100),           @diminutivo varchar(3)         SET @diminutivo = ‘UISRAEL'         IF  @diminutivo = ‘UISRAEL'         BEGIN             PRINT 'www.uisrael.edu.ec'         END     ELSE       BEGIN             PRINT 'Otra Web'         END
IF () BEGIN ... END ELSE IF () BEGIN ... END ELSE BEGIN ... END