Tipos de UDF

UDF son las Funciones Definidas por el Usuario, es decir aquellas funciones de nuestra base de datos donde devolvemos algún valor o registros. Básicamente existen 3 tipos: Funciones Escalares, Funciones en Línea y Funciones en línea de múltiples sentencias. Veamos las diferencias entre ellas, así como algún ejemplo de cada.

Una Función Escalar es aquella que devuelve un valor escalar único. Ejemplo:

CREATE FUNCTION f_escalar (@parametro int) RETURNS INT AS
BEGIN
DECLARE @resultado int
SET @resultado=(@parametro*2)-10
RETURN @resultado END
GO
Una Función en Línea, por el contrario devuelve un conjunto de filas y columnas, o sea una tabla, que podemos usar en la llamada a la función con JOIN con otras tablas, etc. Sin embargo no podremos hacer uso de ORDER BY. Ejemplo:

CREATE FUNCTION f_linea(@parametro_desde INT, @parametro_hasta INT) RETURNS TABLE AS
RETURN
(
SELECT * from [Person].Contact where ContactID>=@parametro_desde AND ContactID<=@parametro_hasta
)
GO

Una Función en Línea de Múltiples Sentencias también devuelve un conjunto de filas y columnas, pero con la excepción de que es más compleja la lógica subyacente, y que podemos definir la tabla. Ejemplo:
 
CREATE FUNCTION f_multiple(@Edad int) RETURNS @invitados TABLE
(
Codigo int
,Nombre varchar(50)
,Flag_invitado char
AS
BEGIN

INSERT INTO @invitados
SELECT Codigo, Nombre, 'N'
FROM Persona WHERE Edad<@Edad;

INSERT INTO @invitados
SELECT Codigo, Nombre, 'S'
FROM Persona WHERE Edad>=@Edad

RETURN
END
GO

No hay comentarios :

Publicar un comentario

Buscar en el Blog: