Re: Ayuda con funcion y Punto Net

From: Javier Chávez B(dot) <jchavezb(at)gmail(dot)com>
To: "Fernando Siguenza" <fsigu(at)hotmail(dot)com>
Cc: "Foro Postgres" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda con funcion y Punto Net
Date: 2008-11-25 17:04:50
Message-ID: ded64bba0811250904p44832c01u131d6e40a9db808c@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

2008/11/25 Fernando Siguenza <fsigu(at)hotmail(dot)com>:
> Si amigo seria este
> Si seria este
> comando.Parameters.Add(new NpgsqlParameter("@AgeCod", NpgsqlDbType.Varchar,
> 3)).Value = agecod;
>
> pero esto es para agregar parametros a la funcion y no para decir que
> parametros me va a retornar la funcion???
>
> Mi intencion es evitar tener que crear un tipo con las columnas que retorna
> una funcion y evitar esto
> create type tPrueba (asiagecod varchar,asifec date,asidoc varchar,asinum
> varchar,saldo numeric)

Probaste si asi funciona???

Porque es diferente probar desde PgAdmin a estar trabajando con el
Objeto que conversa con PG .. supongo que el se encargara de ese tipo
de situaciones...

Prueba ejecutando la consulta con los parametros y llenando un dataSet
y despues recorrelo ... o sea declara tu funcion - parametrizala y
trata de obtener valores...

Slds.
J
Ps : Buscaste en historico de la Lista???

> y en la funcion poner esto
>
> CREATE OR REPLACE FUNCTION prueba() RETURNS SETOF tPrueba AS $$
>
> ya que sino me tocaria para cada funcion en la que deseo tener un resultado
> de varias tablas crear un tipo.
>
> Saludos
>
>
>> Date: Tue, 25 Nov 2008 16:43:27 +0000
>> From: jchavezb(at)gmail(dot)com
>> To: fsigu(at)hotmail(dot)com
>> Subject: Re: [pgsql-es-ayuda] Ayuda con funcion y Punto Net
>> CC: pgsql-es-ayuda(at)postgresql(dot)org
>>
>> 2008/11/25 Fernando Siguenza <fsigu(at)hotmail(dot)com>:
>> > Gracias por responder, eso si lo tengo claro lo hago de esta forma
>> > NpgsqlCommand comando = new NpgsqlCommand("prueba", cnpg);
>> > comando.CommandType = CommandType.StoredProcedure;
>> >
>> > Pero el problema es que para que funcione desde pgadmin tengo que poner
>> > que
>> > tipo de datos me retirna la funcion
>> > select * from prueba() as (asiagecod varchar,asifec date,asidoc
>> > varchar,asinum varchar,saldo numeric);
>>
>> >
>> > Ya que si lo llamo solo como select * from prueba()
>>
>> Claro porque la funcion esta definida con parametros...
>>
>> > me da este error, ERROR: a column definition list is required for
>> > functions
>> > returning "record"
>> > Entonces en pgadmin ya resolvi esto con el as (asiagecod varchar,asifec
>> > date,asidoc varchar,asinum varchar,saldo numeric);
>> >
>> > Ahora como debo indicar desde punto net algo asi probe y no me funciono
>> > NpgsqlCommand comando = new NpgsqlCommand("prueba as (asiagecod
>> > varchar,asifec date,asidoc varchar,asinum varchar,saldo numeric)",
>> > cnpg);
>>
>> Y NpgsqlCommand no tiene una propiedad algo asi como Param??? o algo
>> por el estilo ... porque son sentencias separadas una para declarar
>> que es un Store Procedure o funcion y otra para seteo de parametros..
>> dale una vuelta por ese lado.
>>
>> Slds.
>>
>> >
>> > espero haberme explicado un poco mas muchas gracias
>> >
>> >> Date: Tue, 25 Nov 2008 16:28:36 +0000
>> >> From: jchavezb(at)gmail(dot)com
>> >> To: fsigu(at)hotmail(dot)com
>> >> Subject: Re: [pgsql-es-ayuda] Ayuda con funcion y Punto Net
>> >> CC: pgsql-es-ayuda(at)postgresql(dot)org
>> >>
>> >> 2008/11/25 Fernando Siguenza <fsigu(at)hotmail(dot)com>:
>> >> > Amigos tengo un problema para llamar a una funcion desde c#, tengo
>> >> > una
>> >> > funcion que reporta un grupo de registros algo asi:
>> >> >
>> >> > CREATE OR REPLACE FUNCTION prueba() RETURNS SETOF record AS $$
>> >> > DECLARE
>> >> > cMayor record;
>> >> > BEGIN
>> >> > for cMayor in select
>> >> > asicab.asiagecod,asicab.asifec,asicab.asidoc,asicab.asinum,0.00000 as
>> >> > saldo
>> >> > FROM asicab ORDER BY asifec
>> >> > LOOP
>> >> > RETURN NEXT cMayor;
>> >> > END LOOP;
>> >> > RETURN;
>> >> > END;
>> >> > $$
>> >> > LANGUAGE 'plpgsql';
>> >> >
>> >> > desde pgadmin le llamo de esta forma
>> >> > select * from prueba() as (asiagecod varchar,asifec date,asidoc
>> >> > varchar,asinum varchar,saldo numeric);
>> >> >
>> >> > Y en donde defino que columnas son las que retorna dicha funcion y
>> >> > funciona
>> >> > todo muy bien,
>> >> > ahora mi dilema es como hago para llamar a esta funcion desde punto
>> >> > net???
>> >> >
>> >> > Espero me puedan ayudar
>> >> >
>> >> > ________________________________
>> >> > Windows Live Hotmail now works up to 70% faster. Sign up today.
>> >>
>> >>
>> >> Depende del objeto con que te estes conectando con .Net,
>> >> lamentablemente ahora no estoy con G y C# sino te lo hubiese enviado,
>> >> pero la logica es siempre la misma tienen un Command o algo asi que
>> >> tiene la propiedad de ejecutar sql ya sea una funcion o una consulta
>> >> generalmente permiten agregar parametros para hacer esto dinamico...
>> >> despues cuando recuperas se hace en un DataTable o un DataSet... con
>> >> los nombres de los campos que estas consultando ....
>> >>
>> >> Investiga del objeto coneccion que estas usando de seguro el te
>> >> resolvera tus dudas.
>> >>
>> >> Slds.
>> >> J.
>> >>
>> >>
>> >> --
>> >> Cumprimentos
>> >> jchavez
>> >> linux User #397972 on http://counter.li.org/
>> >
>> >
>> > ________________________________
>> > Color coding for safety: Windows Live Hotmail alerts you to suspicious
>> > email. Sign up today.
>>
>>
>>
>> --
>> Cumprimentos
>> jchavez
>> linux User #397972 on http://counter.li.org/
>
>
>
>
> ________________________________
> Stay up to date on your PC, the Web, and your mobile phone with Windows Live

--
Cumprimentos
jchavez
linux User #397972 on http://counter.li.org/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guido Barosio 2008-11-25 17:13:10 Re: PG Day
Previous Message Fernando Fontana 2008-11-25 17:01:37 Re: PG Day