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