La estructura IF evalúa una condición lógica y en función del resultado se realiza una u otra expresión. Dicha expresión se específica mediante una expresión lógica donde el resultado pueda ser de tipo booleano, es decir true o false
Sintaxis Genérica
IF <CONDICION LOGICA>
<BEGIN>
<expresiones verdaderas>
<END>
Donde:
- CONDICION LOGICA: Es la expresión que el usuario debe debe determinar para ejecutar una o más expresiones. Hay que tener en cuenta que aquí es el momento de usar los operadores lógicos(< <= >> <>) y relacionales (AND OR NOT EXIST)
- BEGIN: Marca el inicio de las expresiones si la condición resultara TRUE en su evaluación
- END: Pone fin a las expresiones iniciadas desde el operador BEGIN
Pero basta de teoría, pasemos a los ejemplos que es donde se entiende mejor estos conceptos.
Ejemplo 1:
Script que
permita insertar un nuevo registro a la tabla PAIS, en caso se registre
duplicidad en el nombre de un país mostrar un mensaje de PAIS YA REGISTRADO caso contrario, ingresar dicho país y al final
mostrar un mensaje de PAIS REGISTRADO
CORRECTAMENTE
---1.
DECLARE
@IDPAIS CHAR(4) = '0014', @PAIS VARCHAR(40)='HONDURAS'
---2.
IF EXISTS (SELECT * FROM PAIS WHERE PAIS=@PAIS)
BEGIN
PRINT 'PAIS YA REGISTRADO'
END
ELSE
BEGIN
INSERT INTO PAIS
VALUES (@IDPAIS, @PAIS)
PRINT 'PAIS AGREGADO
CORRECTAMENTE'
END
GO
En el punto 1 se declaran dos variables, la primera almacenará el código del nuevo país a registrar y la segunda variable almacenará el nombre del país.
En el punto 2 se verifica la existencia del valor asignado a la variable @PAIS dentro de la tabla PAIS. En caso la condición sea TRUE se muestra el mensaje PAÍS YA REGISTRADO, cuando la condición sea FALSE se aplica la instrucción INSERT y el mensaje de PAÍS REGISTRADO CORRECTAMENTE.
Veamos el resultado con la variable 'Honduras'
Ahora cambiare el valor de la variable @PAIS y le pondré el valor de 'COSTA RICA', veamos el resultado:
Ejemplo 2:
Script que permita
mostrar el mensaje de NO HAY PASAJEROS
EN ESTE PAIS solo cuando el total de pasajeros asignados a un determinado
PAIS no tenga registros en la tabla PASAJERO. Caso contrario determinar cuántos
pasajeros tiene dicho país y mostrarlos con el mensaje EL PAIS… TIENE… PASAJEROS
--1.
DECLARE @PAIS VARCHAR(40)='CHINA'
--2.
IF (SELECT COUNT(*)
FROM PASAJERO PAS
LEFT JOIN PAIS PAI ON PAS.IDPAIS=PAI.IDPAIS
GROUP BY PAI.PAIS
HAVING PAI.PAIS=@PAIS) IS NULL
PRINT 'NO HAY PASAJEROS EN
ESTE PAIS'
ELSE
--3
BEGIN
DECLARE @TOTAL INT
SELECT @TOTAL=COUNT(*)
FROM PASAJERO PAS
LEFT JOIN PAIS PAI ON PAS.IDPAIS=PAI.IDPAIS
GROUP BY PAI.PAIS
HAVING PAI.PAIS=@PAIS
PRINT 'EL PAIS ' +@PAIS+' TIENE ' + CAST(@TOTAL AS CHAR(2)) + 'PASAJEROS'
END
En el punto uno se declara la variable local @PAIS y se le asigna el valor CHINA para realizar la prueba.
En el punto dos se evalúa el total de pasajeros del país, en este caso CHINA, se usa la clausula LEFT JOIN para poder contar también a los países que no registran pasajero alguno, la condición es comparada con el operador IS NULL justamente para determinar si dicho país no tiene pasajeros asignados; en caso que sea TRUE entonces muestra el mensaje NO HAY PASAJEROS EN ESTE PAIS.
En el punto tres las instrucciones implementadas solo ocurren cuando la condición del punto dos es falso, eso quiere decir que el país si tiene pasajeros asignados. Primero hay que indicar que todas estas sentencias debes estar envueltas con BEGIN END; luego se declara la variable @TOTAL para almacenar el total de pasajeros, ya que estamos en la condición donde no es nulo el número de pasajeros. Finalmente se imprime el mensaje mostrando el nombre del país y el total de pasajeros que tiene asignado.
En caso de que la asignación del país sea CHINA entonces el mensaje es el siguiente:
Si asignamos el país PERU entonces el mensaje sería el siguiente:
Ejemplo 3
Script que permita
mostrar un mensaje de acuerdo al total de registros por un determinado año,
según la siguiente tabla
Rango
|
Mensaje
|
Hasta 10
|
Total de reservas se encuentra entre 1 y 10
|
11 hasta 15
|
Total de reservas se encuentra entre 11 y 15
|
Más de 15
|
Total de reservas supera 15
|
--1
DECLARE @AÑO
INT=2012, @TOTAL INT
--2
SELECT
@TOTAL = COUNT(*)
FROM
RESERVA RES
GROUP BY YEAR(RES.FECHA)
HAVING YEAR(RES.FECHA)=@AÑO
--3
IF
@TOTAL>0 AND
@TOTAL <=10
PRINT
'EL TOTAL DE RESERVAS SE ENCUENTRA ENTRE 1 Y 10'
ELSE IF @TOTAL>10 AND @TOTAL<=15
PRINT 'EL TOTAL DE RESERVAS
SE ENCUENTRA ENTRE 11 Y 15'
ELSE
PRINT
'EL TOTAL DE RESERVAS SUPERA 15'
GO
En el punto uno se declara la varable @AÑO con la asignación del valor 2012 y también la variable @TOTAL se declara para obtener el total de reservas por año.
En el punto dos se acumulan el total de reservas obtenidas desde la tabla RESERVA solo si el año agrupado es el mismo que está asignado en la variable.
En el punto tres se hace una comparación de rango de valores de este total acumulado en la variable @TOTAL,
Hasta aquí el post queridos lectores, esperando sea de su utilidad, como ven, ya empezamos con la programación TRANSACT, espero sus comentarios, los +1 o por lo menos den un clic en algún anuncio de su interés.
No hay comentarios.:
Publicar un comentario