Buenos días,
La presente es para solicitar una inquietud acerca de como obtener los
resultados de un cursor de una funcion de este estilo.
-- DROP FUNCTION sigc_admidatounico.get_dato2(integer, character varying, date,
numeric);
CREATE OR REPLACE FUNCTION sigc_admidatounico.get_dato2(p_iddato integer,
p_nombredato character varying, p_fecha date, p_edad numeric)
RETURNS refcursor AS
$BODY$
DECLARE
ocursor refcursor;
-- Uso de esta función: SELECT public.get_clientes(p1, p2, ... , pn,'cur') ;
fetch all in cur;
BEGIN
if p_iddato!= null then
OPEN oCursor FOR Select
iddato, nombredato, fecha, edad
from
public.dato
WHERE iddato = p_iddato;
else
OPEN oCursor FOR Select
iddato, nombredato, fecha, edad
from
public.dato
WHERE coalesce(iddato,'0') = coalesce(p_iddato,coalesce(iddato,'0'))
and coalesce(nombredato,'') like coalesce('%'||p_nombredato||'%','%%')
and coalesce(fecha,now()) = coalesce(p_fecha,coalesce(fecha,now()))
and coalesce(edad,'0') = coalesce(p_edad,coalesce(edad,'0'))
;
end if;
RETURN oCursor;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Como se puede ver esta funcion retorna un refcursor. Ahora la pregunta es ¿como
puedo visualizar los datos de ese refcursor retornado?
Gracias,
Alejandro
Posdata: no quiero hacerlo de esta forma SELECT public.get_clientes(p1, p2, ...
, pn,'cur') ; fetch all in cur;
Donde cur es una variable de entrada del cursor, ya que quiero que el usuario
solo ingrese los parametros que realmente corresponden a esta función y no
meter un parámetro adicional.