Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Problema devolviendo un refcursor

Estas en el tema de Problema devolviendo un refcursor en el foro de PostgreSQL en Foros del Web. Soy nuevo aqui en estos foros y les pido ayuda porque ya no se que hacer. Mi problema es el siguiente: quiero devolver datos de ...
  #1 (permalink)  
Antiguo 05/10/2009, 13:27
 
Fecha de Ingreso: octubre-2009
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 0
Problema devolviendo un refcursor

Soy nuevo aqui en estos foros y les pido ayuda porque ya no se que hacer.

Mi problema es el siguiente: quiero devolver datos de varias tablas pero la función debe recibir 2 parámetros por los cuales debe filtrar los resultados de la consulta, el problema es que lo estoy haciendo con refcursors, entonces probando yo para buscar soluciones cuando la función no recibe parámetros el refcursor me devuelve la consulta con todos los datos y lo puedo obtener en el Visual Studio todo ok, pero cuando le agrego los parámetros aunque no los use en la función, es decir, por el simple hecho de agregar parámetros el refcursor me devuelve <unnamed portal 1>.

El codigo de la funcion con el parametro es:

CREATE OR REPLACE FUNCTION "public"."probando" (pnombre varchar) RETURNS "pg_catalog"."refcursor" AS
$body$
DECLARE
miCursor refcursor;
BEGIN
OPEN miCursor FOR
SELECT
public.nrol.nomb_rol,
public.ntipo_persona.tipo_persona,
public.dpersona.nombres,
public.dpersona.apellido1,
public.dpersona.apellido2,
public.dpersona.ci,
public.dpersona.correo,
public.dpersona.usuario,
public.dpersona.contrasenna,
public.dpersona.id_persona
FROM
public.dpers_rol_privil
INNER JOIN public.ntipo_persona ON (public.dpers_rol_privil.id_tipo_persona = public.ntipo_persona.id_tipo_persona)
INNER JOIN public.nrol ON (public.dpers_rol_privil.id_rol = public.nrol.id_rol)
INNER JOIN public.dpersona ON (public.dpers_rol_privil.id_persona = public.dpersona.id_persona)
WHERE public.dpersona.nombres like '$1%';
RETURN miCursor;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;


y este es el codigo de Visual Studio, estoy probandolo con una console application:

Console.Write("Nombre: ");
string varNombre = Console.ReadLine();
DBManager pgConection = new DBManager();
pgConection.OpenConection();
NpgsqlCommand command = pgConection.ConfigureCommand("probando", pgConection.Postgre, CommandType.StoredProcedure);
command.Parameters.Add(pgConection.ConfigureParame ter(DbType.String, varNombre));
NpgsqlTransaction trans = pgConection.Postgre.BeginTransaction();
NpgsqlDataReader dr = command.ExecuteReader();
trans.Commit();
while (dr.Read())
for (int k = 0; k < dr.FieldCount; k++)
Console.WriteLine(dr.GetValue(k));
Console.ReadKey();

cuando le quito el parametro a la funcion y la llamo me devuelve los datos aca en la consola normalmente, pero cuando le agrego el parametro incluso aunque no lo use en la funcion solo muestra: <unnamed portal 1>

Nota: DBManager es una clase que yo hice para manejar la BD al igual que el metodo ConfigureParameter();

Saludos, Y.
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 11:34.