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.

 

 

 

 

 

 

 

Responder a