viernes, 13 de enero de 2012

¿Arreglos o arrays en SQL Server ?

Varios me preguntan como hacer un array (arreglo, matriz, vectores) en SQL Server. ¿Es serio no existen ?.
¿ Porqué ?.

Para un programador no tiene sentido, pero para los que trabajamos con bases de datos, más bien nos extraña que quieran usar arreglos.

Ahora, para la gente que le gusta simular vectores, hay un artículo muy interesante de otro MVP que les puede ayudar en su cometido (lamentablemente está en inglés, pero con ayuda de un traductor, estoy seguro que les será útil):

http://www.projectdmx.com/tsql/sqlarrays.aspx

Bueno ahora me toca explicar porqué no hay arrays en SQL Server. Simplemente porque consideran más práctico guardar los datos en tablas. Ya sean tablas temporales, CTEs, variables de tipo tabla. En T-SQL, lo más práctico para nosotros es almacenar los datos ahí. Ahora, en las tablas no se usan ciclos y habrá que ver las necesidades del programador para entender cómo ayudarlo en sus necesidades de programación.

Author: Daniel Calbimonte

People who read this post also read :



6 comentarios:

  1. Hola en mi opinión como programadora creo que es necesario el uso de arreglos en sql, sobre todo en la clausula "where" pues es mucho más fácil enviar todo un vector de ids que colocarlos manualmente, ¿no se si me explique?.

    He estado buscando en diversos foros si existe esta opción pero no hay nada claro, por favor que alguien me explique!!!

    Meis

    ResponderEliminar
  2. Ana, no entiendo que quieres.
    Podrías explicar con mas detalle ?

    ResponderEliminar
  3. Ana quiere decir que es más fácil:

    SELECT * FROM Tabla WHERE ID = arrayIDs

    que:

    SELECT * FROM Tabla WHERE ID = param1 OR ID = param2 OR ID = param3

    Gracias!

    ResponderEliminar
  4. Para ese caso se usa una tabla con los parámetros (lo voy a llamar LISTAPARAMETROS) y luego haces esto:
    SELECT * FROM TABLA WHERE ID IN (SELECT ID FROM LISTAPARAMETROS)

    ResponderEliminar
  5. SELECT * FROM Tabla WHERE ID IN (param1, param2, param3)

    ResponderEliminar
  6. Prefiero mi método porque si el "vector" tiene 1000 parámetros no es bueno usar varias comas.

    Usar parámetros y vectores en bases de datos, lo vuelve ineficiente.

    ResponderEliminar