2012-06-21 7 views

Odpowiedz

4

Odnośnik jest określany przez nazwę, automatycznie wygenerowany lub wybrany przez ciebie. Ten page of the doc podaje przykład dla każdego.

Aby pobrać wyniki z ref-kursora, musisz mieć nazwę kursora. W przypadku wygenerowanych nazw będzie to coś w rodzaju <unnamed portal 1>". Następnie można:

FETCH ALL FROM "<unnamed portal 1>"; 

Nazwa kursor jest zwracana z funkcji jako wynik refcursor, więc można dostać go stamtąd.

+0

Tak, ale ponieważ nazwa kursora nie jest zdefiniowana, nie znam go i nie mogę rade ... –

+0

Tylko jeśli używasz nazwy generowane automatycznie. Zobacz pierwszy przykład dokumentu, w którym dzwoniący określa stałą nazwę. –

+0

Cóż, jest fakt, że autor procedury nie określił stałej nazwy. Szukam ogólnego rozwiązania. –

0

Powiedzmy, że masz funkcję postgres zapisaną w taki sposób, że zwraca refkursor;

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; 

Jeśli chcesz wydrukować refkursor, możesz użyć następujących linii kodu;

BEGIN; 
SELECT "com.mkindika"."myfunction" ("refcursor",other input parameters); 
FETCH ALL IN "refcursor"; 
Powiązane problemy