sábado, 5 de mayo de 2007

Sobrepasando límite de caracteres de una consulta SQL

Bueno casi todos estos últimos días he estado trabajando con procedimientos almacenados que guardan la consulta como texto en un varchar, cuyo tamaño máximo es de 8000 :O

Yo pensé que era muchooooo y que nunca podría sobrepasarlo. Sólo pensé esto hasta ayer. Tenía 5 uniones de consultas que debía ajustar, porque se cortaba la consulta. Sin embargo despues tuve que agregar más uniones a la consulta y ahí colapse xD.

Pero si había una solucion: Vistas. Cada consulta la agrupe en una vista. Despues simplemente uní todas las vistas y la consulta quedó muy pequeña :).

Sólo algunas consideraciones a tener al momento de generar las vistas:

  • Como son uniones claramente cada vista debe retornar el mismo número de columnas.
  • En mi caso debía pasar al procedimiento almacenado un parámetro @WHERE el cual es el encargado de filtrar los datos. Este parámetro se une a un WHERE para cada vista. Este WHERE se encuentra fuera de la vista. Para poder filtrar por algún parámetro en especial se debe tener en cuenta que este parámetro especial debe estar seleccionado en la vista, de lo contrario la consulta genera un error.
Finalmente me queda sólo decir que siempre pense que las vistas eran inútiles y que no se usaban para nada xD. Me lleve una agradable sorpresa.

Eso por ahora!