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: [EMAIL PROTECTED]> To: [EMAIL
> PROTECTED]> Subject: Re: [pgsql-es-ayuda] Ayuda con funcion y Punto Net> CC:
> [email protected]> > 2008/11/25 Fernando Siguenza <[EMAIL
> PROTECTED]>:> > 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: [EMAIL PROTECTED]> >> To: [EMAIL PROTECTED]> >>
> Subject: Re: [pgsql-es-ayuda] Ayuda con funcion y Punto Net> >> CC:
> [email protected]> >>> >> 2008/11/25 Fernando Siguenza <[EMAIL
> PROTECTED]>:> >> > 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: [EMAIL
> PROTECTED]> >> >> To: [EMAIL PROTECTED]> >> >> Subject: Re: [pgsql-es-ayuda]
> Ayuda con funcion y Punto Net> >> >> CC: [email protected]> >>
> >>> >> >> 2008/11/25 Fernando Siguenza <[EMAIL PROTECTED]>:> >> >> > 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: [EMAIL PROTECTED]> >> >> >> To:
> [EMAIL PROTECTED]> >> >> >> Subject: Re: [pgsql-es-ayuda] Ayuda con funcion y
> Punto Net> >> >> >> CC: [email protected]> >> >> >>> >> >> >>
> 2008/11/25 Fernando Siguenza <[EMAIL PROTECTED]>:> >> >> >> > 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/