Función SQL/PL en versión 7.4

From: "Sergio Villalba Moreno" <svillalba(at)cherrytel(dot)com>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Función SQL/PL en versión 7.4
Date: 2011-04-05 16:28:30
Message-ID: 98C6D5F839C84DF0BA8CC820AC1F2E48@tecnico2
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Sergio 2011-04-05 16:29:30 Función SQL/PL en versión 7.4
Previous Message Alvaro Herrera 2011-04-05 16:19:21 Re: comportamiento diferente en PG9.0.3