Estructura If en SQL Server

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
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. La sintaxis para estos casos puede cambiar.

If Simple

If
Begin
Bloque de instrucciones cuando la
expresión es verdadera
End

Doble

If
Begin
Bloque de instrucciones cuando la
expresión es verdadera
End
Else
Begin
Bloque de instrucciones cuando la
expresión es Falsa
End

Anidados, una estructura If dentro de otra.

If
Begin
Bloque de instrucciones cuando la
expresión es verdadera
End
Else
Begin
If
Begin
Bloque de instrucciones cuando la
expresión es verdadera
End

Else
Begin
Bloque de instrucciones cuando la
expresión es Falsa
End
End

Ejemplos

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

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
If Datepart(q, GetDate()) in (1)
Begin
Print ‘Verano’
End
Else
Begin
If Datepart(q, GetDate()) in (2)
Begin
Print ‘Otoño’
End
Else
If Datepart(q, GetDate()) in (3)
Begin
Print ‘Inverno’
End
Else
Begin
Print ‘Primavera’
End
End
go

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 ategoryname, 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

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