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