La sentencia condicional IF permite evaluar una expresión booleana, y ejecutar las operaciones contenidas en el bloque formado por BEGIN END
Ejemplo:
DECLARE @PAIS INT,
@DESCRIPCION VARCHAR(255)
SET @PAIS = 5
SET @DESCRIPCION = 'ESPAÑA'
IF EXISTS(SELECT * FROM PAISES WHERE CODIGOPAIS = @PAIS)
BEGIN
UPDATE PAISES
SET DESCRIPCION = @DESCRIPCION
WHERE CODIGOPAIS = @PAIS
END
ELSE
BEGIN
INSERT INTO PAISES VALUES (@CODIGOPAIS, @DESCRIPCION)
END
La estructura condicional CASE permite evaluar una expresión y devolver un valor u otro
Ejemplo:
DECLARE @WEB VARCHAR(100)
@DIMINUTIVO VARCHAR(3)
SET @DIMINUTIVO = 'DJK'
SET @WEB = (CASE WHEN @DIMINUTIVO = 'DJK' THEN 'WEB DJK' ELSE 'OTRA WEB' END)
PRINT @WEB
La sentencia While ejecuta una serie de sentencias en un bucle mientras una condición es verdadera
Ejemplo:
DECLARE @Recibo int
WHILE EXISTS (SELECT * FROM RECIBOS WHERE PENDIENTE = 'S')
BEGIN
SET @Recibo = (SELECT TOP 1 CO_RECIBO FROM RECIBOS WHERE PENDIENTE = 'S')
UPDATE RECIBOS
SET PENDIENTE = 'N'
WHERE CO_RECIBO = @Recibo
END
La sentencia GOTO nos permite desviar el flujo de ejecución hacia una etiqueta. Fue muy utilizada en versiones anteriores de SQL Server conjuntamente con la variable de sistema @@ERROR para el control de errores.
Ejemplo:
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 PRODUJO UN ERROR'