Foros del Web » Programación para mayores de 30 ;) » .NET »

PostgreSQL 8.2, Npgsql para 2.0, C# 2.0

Estas en el tema de PostgreSQL 8.2, Npgsql para 2.0, C# 2.0 en el foro de .NET en Foros del Web. Buenos dias foreros !!! Veran tengo un problema con un SP del tipo plpgsql. La cuestion es que dicho SP me devuelve un refcursor con ...
  #1 (permalink)  
Antiguo 27/07/2007, 03:13
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
PostgreSQL 8.2, Npgsql para 2.0, C# 2.0

Buenos dias foreros !!!

Veran tengo un problema con un SP del tipo plpgsql. La cuestion es que dicho SP me devuelve un refcursor con los datos de una select:
Código:
CREATE OR REPLACE FUNCTION pdameusuarios2(refcursor) RETURNS refcursor AS
$BODY$
BEGIN
	OPEN $1 FOR SELECT * FROM tusuarios;
	RETURN $1;
END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION pdameusuarios2(refcursor) OWNER TO "admin";


--PARA PROBAR QUE FUNCIONA
select pdameusuarios2('micursor');
FETCH ALL in micursor;

Pues bien el SP funciona perfectamente, sin embargo... soy incapaz de llenar mi DataTable con los datos. Pense que era como con el OracleClient, que si pasas el cursor como un parametro InOutPut ya sabría rellenarme solo el DataTable, pero no es asi. Actualmente tengo el siguiente codigo para .NET
Código:
            Npgsql.NpgsqlConnection miCn = new Npgsql.NpgsqlConnection(".....");
            DataTable tbDatos = new DataTable();

            Npgsql.NpgsqlCommand objComando = new Npgsql.NpgsqlCommand("pdameusuarios2('micursor')", miCn);
            objComando.CommandType = CommandType.StoredProcedure;

            Npgsql.NpgsqlParameter objParametro = new Npgsql.NpgsqlParameter("micursor", NpgsqlTypes.NpgsqlDbType.Refcursor);
            objParametro.Direction = ParameterDirection.Output;
            objComando.Parameters.Add(objParametro);

            Npgsql.NpgsqlDataAdapter objDa = new Npgsql.NpgsqlDataAdapter(objComando);
            objDa.Fill(tbDatos);
Esta llamada me esta rellenando en tbDatos un DataRow con el valor "micursor". Si dejo el NpgSqlCommand como ("pdameusuarios2()") entonces me da un error de que dicho procedimiento no existe.

Por favor, si alguien sabe como puedo rellenar mi DataTable con un SP de plpgsql que devuelve mas de un registro en un RefCursor, le agradeceria que me hechase un cable.



NOTA: He mirado en la doc de Npgsql.
__________________
Charlie.
  #2 (permalink)  
Antiguo 23/04/2010, 01:25
 
Fecha de Ingreso: noviembre-2007
Mensajes: 7
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: PostgreSQL 8.2, Npgsql para 2.0, C# 2.0

Estimado...
me interesa bastante saber si lograste llenar el dataTable..o Un DataSet....tengo el mismo problema y no consigo nada mas que el nombre del cursor de vuelta..

cualquier ayuda estaria muy agradecido...saludos cordiales..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:22.