Re: Pasar parametro string a funcion en 7.4.8

From: "usuario anonimo" <opinante(dot)anonimo(at)gmail(dot)com>
To: "Calabaza Calabaza" <calalinux(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Pasar parametro string a funcion en 7.4.8
Date: 2007-11-07 18:22:57
Message-ID: 91b524660711071022k48a9b64hd413b631221e71a0@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 7/11/07, Calabaza Calabaza <calalinux(at)gmail(dot)com> escribió:
> 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???

¿ Por qué no hacer un vista ?

>
> 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
> --
> TIP 4: No hagas 'kill -9' a postmaster
>

--
_________________________________
Solo soy una mente genial en un cuerpo

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message KoloSSo 2007-11-07 18:32:35 Re: Ayuda pasar datos de MSSQL a Postgresql
Previous Message Calabaza Calabaza 2007-11-07 17:28:35 Pasar parametro string a funcion en 7.4.8