Duda retorno valores de función

From: Rodrigo Ruiz <rruizf(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Duda retorno valores de función
Date: 2011-07-19 21:32:23
Message-ID: 4E25F7E7.7080104@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Estimados,
saludos desde un desconsolado Chile luego de una dura derrota ante
Venezuela en Copa América...

El problema es, tengo el siguiente panorama:

I. type valores_factura as (exento real, afecto real, neto real, iva
real, total real, saldo real);
II. funcion calcula_valores(bigint) y que retorna un valores_factura.

Si ejecuto lo siguiente:

> SELECT calcula_valores(15);
Esto me retorna un solo dato como array (digo como pues no se si es
así), de la forma (1253.4, 2374, 3489...)

> SELECT * FROM calcula_valores(15);
Esto me retorna los campos exento, afecto, neto... de forma separada.

Lo que yo necesito es:

> SELECT f.*, calcula_valores(f.id) FROM factura f WHERE f.id = 15;

Y que el resultado fuera, todos los datos de la factura mas los datos
que se calculan en la función, o sea que es resultado sea algo como:
(id, fecha, rut, ..., exento, afecto, neto, ...), sin embargo el
resultado obtenido es (id, fecha, rut, ..., (exento, afecto, neto, ...))
o sea que los cálculos los trae como un solo campo.

La función está definida de la siguiente manera:

CREATE OR REPLACE FUNCTION calcula_valores(factura_id BIGINT)
RETURNS valores_factura AS $$
DECLARE
f RECORD;
data calculo_factura;
exento FLOAT;
afecto FLOAT;
neto FLOAT;
viva FLOAT;
total FLOAT;
saldo FLOAT;
BEGIN
-- Calculos varios
SELECT d1,d2,d3,d4,d5,d6 INTO data;

RETURN data;
END;
$$

Probé declarando la función con RETURNS SETOF valores_factura pero
también me arrojaba errores, la verdad es que no manejo mucho el tema y
finalmente recurro a Uds.

Pueden ayudarme a obtener los cálculos que hace la función como datos
adicionales a la tabla 'factura'?

Gracias!

--
Rodrigo Ruiz Fuentes

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message motum hesa 2011-07-21 00:37:52 Ayuda Consulta de fechas
Previous Message Jaime Casanova 2011-07-19 07:50:31 Re: Consulta de PostgreSQL