Hola a todos,
Estoy intentando realizar un procedimiento almacenado con una consulta algo
compleja
La consulta es esta:
SELECT sum(round("numeric"(float8(detalle_facturas.cantidad) *
(detalle_facturas.precio_unidad - detalle_facturas.precio_unidad *
detalle_facturas.porc_descuento / 100::double precision) *
(detalle_facturas.porc_comision / 100::double precision)), 2)) AS total FROM
facturas, contratos, detalle_facturas, agentes WHERE facturas.c_contrato =
contratos.clave AND facturas.clave = detalle_facturas.c_factura AND
contratos.c_agente = agentes.clave AND contratos.b_baja = false AND
contratos.clave=1928
Como no consigo realizar la consulta en el procedimiento almacenado, he
pensado en esta alternativa, aunque no funciona correctamente.
CREATE FUNCTION precioTotalFactura(integer) RETURNS text AS '
DECLARE
-- Declare aliases for user input.
id ALIAS FOR $1;
-- Declare variables to hold the customer name.
f_precio_unidad int;
f_porc_descuento int;
f_cantidad int;
f_porc_comision int;
f_total int;
BEGIN
SELECT INTO f_porc_comision, f_precio_unidad, f_porc_descuento,
f_cantidad, f_porc_comision
detalle_facturas.porc_comision,
detalle_facturas.precio_unidad, detalle_facturas.porc_descuento,
detalle_facturas.cantidad
FROM facturas, contratos, detalle_facturas, agentes
WHERE facturas.c_contrato = contratos.clave AND facturas.clave
= detalle_facturas.c_factura AND contratos.c_agente = agentes.clave AND
contratos.b_baja = false AND contratos.clave = id;
--calculamos el total
f_total = (f_cantidad * f_precio_unidad) * (f_porc_comision / 100);
-- Return the name.
RETURN id || '':'' || f_total;
END
' LANGUAGE 'plpgsql';
Alguien me puede dar alguna idea, gracias.
Gracias, saludos.