TRANSACT SQL - Ejemplo: Funciones tipo tabla

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:24 PM por David Miralpeix

Funciones tipo tabla:

CREATE FUNCTION [dbo].[Fun_DameDatosFactura] (@IdFactura T_Id_Factura=NULL)
RETURNS @RET TABLE (Anyo int, Mes int,IdFactura int, IdArticulo varchar(50),Cant decimal (38,10),PVP Float, Precio_Total Float)
-- funcion para devolver datos de factura
BEGIN
Declare @Tab_Facts TABLE (IdFactura int)
-- rellenar @Tab_Facts
IF @IdFactura IS NOT NULL
INSERT INTO @Tab_Facts VALUES (@IdFactura)
ELSE
INSERT INTO @Tab_Facts (IdFactura)
SELECT IdFactura FROM Facturas_Cli_Cab
-- rellenar tabla retorno
INSERT INTO @RET (Anyo,Mes,IdFactura,IdArticulo,Cantidad,PVP,Precio_Total)
SELECT YEAR(F.FechaFact),
MONTH(F.FechaFact),
F.IdFactura,
l.IdArticulo,
l.Cantidad,
l.Precio_EURO * (1-L.Descuento/100.0) * (1-F.Descuento/100.0) * (1-F.DescuentoPP/100.0) PVP,
L.Cantidad * L.Precio_EURO * (1-L.Descuento/100.0) * (1-F.Descuento/100.0) * (1-F.DescuentoPP/100.0) Precio_Total
FROM @Tab_Facts T INNER JOIN Pedidos_Cli_Lineas L ON T.IdFactura=L.IdFactura
INNER JOIN Facturas_Cli_Cab F WITH (NOLOCK) ON L.IdFactura=F.IdFactura
-- retorno<
RETURN
END
-- llamada
SELECT * FROM dbo.[Fun_DameDatosFactura](default)
-- llamada
SELECT * FROM Facturas_cli_cab F CROSS APPLY dbo.[Fun_DameDatosFactura](F.IdFactura) lFun

¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo