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: > pgsql-es-ayuda@postgresql.org> > 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: > pgsql-es-ayuda@postgresql.org> >>> >> 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: pgsql-es-ayuda@postgresql.org> >> > >>> >> >> 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: pgsql-es-ayuda@postgresql.org> >> >> >>> >> >> >> > 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/