Estructura IF … Else

Estructura If en SQL Server

Al igual que los lenguajes de programación la estructura If permitirá evaluar una o mas condiciones y si el resultado final es verdadero se ejecutan un bloque de instrucciones, si el resultado final es falso se pueden ejecutar de manera opcional otro bloque de instrucciones.

Sintaxis

If <Expresión Lógica>
Bloque de instrucciones cuando la
expresión es verdadera
[
Else
Bloque de instrucciones cuando la
expresión es Falsa
]



Notas importantes

  • Es conveniente definir el bloque de instrucciones de cualquiera de los resultados de la expresión lógica entre las instrucciones Begin y End
  • Se puede usar la estructura IF de varias formas, simple, doble e  inclusive If anidados.
  • Es recomendable usar sangrías para diferenciar los bloques de la estructura.

La sintaxis para estos casos puede cambiar como sigue:

 

Ejemplos

1. Suponiendo que se trabaja de lunes a viernes, la siguiente estructura obtiene el número de dia de la semana, si es del 1 al 5 imprime el mensaje “Dia Laborable” del lo contrario “Fin de semana”

Para el ejercicio usaremos DatePart. (Ver Funciones de Fecha)

If Datepart(dw, GetDate()) in (1,2,3,4,5)
Begin
Print ‘Día Laborable’
End
Else
Begin
Print ‘Fin de semana’
End
go

2. Crear un script para reportar las estaciones, suponer que  los meses de Enero, Febrero y Marzo son Verano, Abril, Mayo y Junio es Otoño, Julio, Agosto y Setiembre es Invierno y Octubre, Noviembre
y Diciembre es Primavera

3. Para crear objetos se pueden usar las vistas de sistema para comprobar si el objeto existe, por ejemplo, listar los índices de la vista Indexes del esquema sys.

Usando la base de datos Northwind, crear un índice (Ver índices) para la tabla Categories en el campo Categoryname, asignar el nombre del índice  CategoriasNombreIDXa, si existe sobre escribirlo.

use Northwind
go
if not exists (select * from sys.indexes where name = ‘CategoriasNombreIDXa’)
Begin
Create index CategoriasNombreIDXa on Categories(Categoryname)
with fillfactor = 70
End
Else
Begin
Create index CategoriasNombreIDXa on Categories(Categoryname)
with (fillfactor = 70, drop_existing = on)
End
go

4. Crear una vista para los clientes (tabla Customers) llamada VistaClientes,  si la vista existe, primero se debe eliminar.

use Northwind
go
if exists (select * from sys.views where name = ‘VistaClientes’)
Begin
Execute(‘Drop view VistaClientes’)
End
Execute(‘Create view VistaClientes
As
Select C.CustomerID As Código, C.CompanyName As Cliente,
C.Address As Dirección
from Customers As C’)
go

Visualizar la lista de Clientes con la vista creada

select * from VistaClientes
go