RE: Ayuda con funcion y Punto Net

From: Fernando Siguenza <fsigu(at)hotmail(dot)com>
To: <jchavezb(at)gmail(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:42:05
Message-ID: COL111-W226F4E0583D3ECD5A936EFA10B0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


Correcto amigo muchas gracias lo lei pero no sale esta casi igual solo que en el ejemplo retorna varios cursores yo solo retorno uno
asi, pero al ejecutar me sale
{Npgsql.NpgsqlException:cursor "<unnamed portal 1>" does not existSeverity: ERRORCode: 34000

no se que puede estar mal


public DataSet recuperaMayor()
{
NpgsqlCommand comando = new NpgsqlCommand("prueba", cnpg);

comando.CommandType = CommandType.StoredProcedure;
return DevolverDataset(comando);
}

public DataSet DevolverDataset(NpgsqlCommand comando)
{
NpgsqlDataAdapter da = new NpgsqlDataAdapter(comando);
DataSet ds = null;
try
{
cnpg.Open();
ds = new DataSet();
da.Fill(ds);
}
catch (Exception ex)
{}
finally
{
da.Dispose();
cnpg.Dispose();
}
return ds;
}
y la funcion la tengo asi
REATE OR REPLACE FUNCTION prueba() RETURNS refcursor AS $$DECLARE cMayor refcursor;BEGIN open cMayor for select * from asicab; RETURN cMayor;END;$$LANGUAGE 'plpgsql';
> Date: Tue, 25 Nov 2008 17:20:35 +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>:> > si lo probe y justo es eso que no me funciona que no se como llamar a esa> > funcion o que podria hacer para que funciones....> >> > Gracias> > Leiste esto:> > http://npgsql.projects.postgresql.org/docs/manual/UserManual.html> > Por ahi puede darte una orientacion o no?> > slds.> J> > > >> >> Date: Tue, 25 Nov 2008 17:04:50 +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>:> >> > 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/> >> >> > ________________________________> > 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/> --> TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán
_________________________________________________________________
See how Windows® connects the people, information, and fun that are part of your life
http://clk.atdmt.com/MRT/go/119463819/direct/01/

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ernesto Lozano 2008-11-25 17:44:21 Re: [pgsql-www] Argentina PUG, Venezuela PUG
Previous Message Juan Ramirez 2008-11-25 17:40:23 RE: Ayuda con funcion y Punto Net