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

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a