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

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppgsql-es-ayuda @
categoriespostgresql
postedJul 19, '11 at 9:32p
activeJul 19, '11 at 9:32p
posts1
users1
websitepostgresql.org.es
irc#postgresql

1 user in discussion

Rodrigo Ruiz: 1 post

People

Translate

site design / logo © 2022 Grokbase