viernes, 23 de mayo de 2014

Table Value Function - SQL Server




Una TVF (Table Value Functions, Función con Valores de Tabla), son funciones definidas por el usuario muy parecidas a las vistas, pero con la particularidad que pueden recibir parámetros, así que podríamos decir que son como vistas, pero que reciben parámetros.

En algunos casos, las TVF podrían reemplazar los procedimientos almacenados (SP, Store Procedure), o bien poder ser utilizados dentro de los mismos.

Son muy útiles, ya que disminuye el tamaño de una consulta, que puede llegar a ser más compleja, permitiendo mejor legibilidad de la misma.

Sintaxis



Características:

  • TVF's retornan una tabla virtual, llamada consulta (query)
  • SQL Server provee dos tipos de TVF
    • Inline: basada de una única expresión SELECT
    • Multi-Statement: Crea y carga varias tablas
  • Soportan parámetros de entrada (no así las vistas).
  • Una TVF Inline, puede ser pensada como una vista parametrizada.

Ejemplo de TVF's



Veremos la utilización dentro de una consulta de la TVF llamada CxC.AntSald_Det, la cual recibe como parámetro el Id de empresa y filtra la información únicamente para esa condición.


Select a.cCodProc,b.cDescript,

Sum(a.Saldo) as Saldo

from CxC.AntSald_Det(@cEmpresa) a inner join CxCProc b on (a.cCodProc=b.cCodProc)

group by a.cCodProc,b.cDescrip

order by a.cCodProc

 Conclusión

La utilización de TVF ayudará mucho, tanto a tener un código más legible, como a realizar consultas complejas.  Por lo que recomiendo su uso. En otro artículo veremos la utilización de los CTE (Common Table Expressions).

Gracias por leer y espero que te sea de utilidad este pequeño artículo.


3 comentarios:

  1. Grande te agradezco por cada nueva cosa que publicas y te digo lo que me enseñastes sobre CTE lo he aplicado en una aplicacion que estoy haciendo esta aplicacio consta de facturacion y la factura la hago usando una CTE

    ResponderBorrar
  2. Interesante tu post. Tambien cabe mencionar que si se abusa de las funciones en consultas de miles de registros baja el desempeño de la consulta. Pero bueno todo depende de donde se use y como. Gracias por tu post.

    ResponderBorrar
  3. Gracias por tu comentario Sergio.

    William, muy buena observación, a como dicen, "Todo en Exceso es malo", la herramienta ahí está, sólo que debe utilizarse con moderación.

    ResponderBorrar

¿Tienes algún comentario? ¿Qué te ha parecido este artículo? Cuéntalo.

 
>