2012-06-21 24 views

Respuesta

4

Un refcursor se conoce por su nombre, ya sea generado automáticamente o elegido por usted. Este page of the doc da un ejemplo para cada uno.

Para obtener resultados de un refcursor debe tener el nombre del cursor. En el caso de nombres generados, será algo así como <unnamed portal 1>". A continuación, puede:

FETCH ALL FROM "<unnamed portal 1>"; 

El nombre del cursor se devuelve desde la función como el resultado refcursor, para que pueda obtener a partir de ahí.

+0

Sí, pero ya no se define el nombre del cursor, no lo sé y no puedo hacer el truco ... –

+0

Sólo si utiliza los nombres generados automáticamente. Vea el primer ejemplo del documento donde la persona que llama especifica un nombre fijo. –

+0

Bueno, está el hecho de que el autor del procedimiento no ha especificado el nombre fijo. Así que estoy buscando una solución general. –

0

Digamos que tiene una función de postgres escrita de tal manera que devuelve un refcursor;

CREATE OR REPLACE FUNCTION "com.mkindika"."myfunction" ("refcursor", other input parameters) RETURNS "pg_catalog"."refcursor" AS 
$body$ 
DECLARE 

---- query 

END; 
$body$ 
LANGUAGE 'plpgsql' STABLE CALLED ON NULL INPUT SECURITY INVOKER; 

Si desea imprimir el refcursor, puede usar las siguientes líneas de código;

BEGIN; 
SELECT "com.mkindika"."myfunction" ("refcursor",other input parameters); 
FETCH ALL IN "refcursor"; 
Cuestiones relacionadas