Pasar parametro string a funcion en 7.4.8

From: "Calabaza Calabaza" <calalinux(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Pasar parametro string a funcion en 7.4.8
Date: 2007-11-07 17:28:35
Message-ID: 958993320711070928n5b2ed84dpbdcdc5272a759cbd@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola amigos, tengo un problema que ya me esta partiendo la cabeza:

En mi trabajo se utiliza el server:
"PostgreSQL 7.4.8 on i486-pc-linux-gnu, compiled by GCC cc (GCC) 4.0.2
20050816 (prerelease) (Debian 4.0.1-5)"

Aclaro que ya he sugerido varias veces que lo actualicen pero no pasa
nada, así que es lo que tengo y me tengo que pelear con el =).

Lo que necesito es crear una funcion a partir de la siguiente consulta sql:

--Tanteo General
Select
sum(doc_importe) as importe_facturas,
round(((sum(doc_importe)-round(sum(doc_importe)/1.1))*30)/100) as
treinta_porcent_del_imp_del_iva,
round(((round(sum(doc_importe)/1.1))*2)/100) as dos_porcent_del_imp_sin_iva,
round((((sum(doc_importe))-(round(((sum(doc_importe)-round(sum(doc_importe)/1.1))*30)/100))-(round(((round(sum(doc_importe)/1.1))*2)/100)))*0.5)/100)
as cero_cinco,
(round(((sum(doc_importe)-round(sum(doc_importe)/1.1))*30)/100))+(round(((round(sum(doc_importe)/1.1))*2)/100))+(round((((sum(doc_importe))-(round(((sum(doc_importe)-round(sum(doc_importe)/1.1))*30)/100))-(round(((round(sum(doc_importe)/1.1))*2)/100)))*0.5)/100))
as total_retenciones
from docus_resp
where doc_id in (2,3);

Los valores que debe retornar son:
2423700;66101;44067;11568;121736

Los valores de la tabla son:
Select doc_id, doc_importe from docus_resp where doc_id in (2,3);
2;1000000
3;1423700

Estoy intentando, pero tengo un problema al pasarle los parametros,
con la siguiente funcion:

CREATE OR REPLACE FUNCTION retenciones_importes(character) RETURNS RECORD AS'
DECLARE
ids alias for $1;
resultado RECORD;

BEGIN
Select into resultado
sum(doc_importe) as importe_facturas,
round(((sum(doc_importe)-round(sum(doc_importe)/1.1))*30)/100) as
treinta_porcent_del_imp_del_iva,
round(((round(sum(doc_importe)/1.1))*2)/100) as dos_porcent_del_imp_sin_iva,
round((((sum(doc_importe))-(round(((sum(doc_importe)-round(sum(doc_importe)/1.1))*30)/100))-(round(((round(sum(doc_importe)/1.1))*2)/100)))*0.5)/100)
as cero_cinco,
(round(((sum(doc_importe)-round(sum(doc_importe)/1.1))*30)/100))+(round(((round(sum(doc_importe)/1.1))*2)/100))+(round((((sum(doc_importe))-(round(((sum(doc_importe)-round(sum(doc_importe)/1.1))*30)/100))-(round(((round(sum(doc_importe)/1.1))*2)/100)))*0.5)/100))
as total_retenciones
from docus_resp
where doc_id in (ids);
return resultado;
END;'
LANGUAGE plpgsql;

y la llamo de esta forma:

Select * from retenciones_importes('2,3') as (importe_facturas
numeric, treinta_porcent_del_imp_del_iva numeric,
dos_porcent_del_imp_sin_iva numeric, cero_cinco numeric,
total_retenciones numeric);

He releido varias veces el manual en la parte:
http://www.postgresql.org/docs/7.4/static/plpgsql-declarations.html#PLPGSQL-DECLARATION-ALIASES

Y la verdad que no entiendo tanto... (mi ingles no es tan bueno)...

En fín, alguna ayudita???

Desde ya muchas gracias y disculpen la longitud del mail....
--
§~^Calabaza^~§ from Villa Elisa, Paraguay
----------------
A hendu hína: Demolition Hammer - 04
http://foxytunes.com/artist/demolition+hammer/track/04

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message usuario anonimo 2007-11-07 18:22:57 Re: Pasar parametro string a funcion en 7.4.8
Previous Message ML 2007-11-07 16:37:08 Re: Conexion Eficiente