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
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 |