BlogoDev

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:

  1. activo es el campo de la tabla en base al que se filtrará la información
  2. @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.

:, ,
Posts Relacionados

1 Trackback or Pingback for this entry

Leave a Reply

Paginas

 

April 2009
M T W T F S S
« Mar   May »
 12345
6789101112
13141516171819
20212223242526
27282930