Técnicas – TSQL 1
by P-los on Apr.20, 2009, under Bases de Datos, Técnicas
Ultimamente me ha tocado hacer revisiones de mantenimiento a un sistema, y me he encontrado en los procedimientos almacenados con algo como lo siguiente:
if (@Todos = 1)
begin
select campo1, campo2 from tabla
end
else
begin
select campo1, campo2 from tabla where activo = 1
end
El principal problema con esta forma, es que al momento de cambiar los campos que se requieren mostrar, es necesario modificar las 2 sentencias para no provocar errores.
Para el presente ejemplo, estaremos asumiendo que:
- activo es el campo de la tabla en base al que se filtrará la información
- @Todos es el parámetro del procedimiento almacenado que indica de que manera filtrar la información
La forma de corregir esto, haciendo más sencillo el código, es modificar la clausula where de la siguiente manera:
select campo1, campo2 from tabla where (activo = 1 or @Todos = 1)
De esta manera, se obtienen los resultados en base a la siguiente tabla:
| activo | @Todos | Resultado |
| 0 | 0 | No se muestra |
| 0 | 1 | Si se muestra |
| 1 | 0 | Si se muestra |
| 1 | 1 | Si se muestra |
Esta tabla es por cada registro de nuestra tabla.
Esta forma de simplificar la estructura de nuestros procedimientos almacenados (o métodos equivalentes) aplica unicamente cuando el campo en base al que se filtra es de tipo binario (o booleano). En un post posterior estaré mostrando la forma que utilizo para simplificar las sentencias cuando el campo mencionado puede tener uno de muchos valores diferentes.
February 27th, 2010 on 5:08 pm
[...] See the article here: Técnicas – TSQL 1 [...]