J'ai une fonction écrite en pl/pgsql qui fonctionne de la même manière que celle décrite ci-dessous:refcursor en pl/pgsql
CREATE FUNCTION reffunc(text) RETURNS refcursor AS '
BEGIN
OPEN $1 FOR SELECT col FROM test WHERE c1=$1;
RETURN $1;
END;
' LANGUAGE plpgsql;
Je veux être en mesure de l'utiliser avec une seule commande de sélection comme opposé à la manière documentée (en utilisant une transaction) est:
BEGIN;
SELECT reffunc('funccursor');
FETCH ALL IN "<unnamed cursor 1>";
COMMIT;
Je suis sûr que je suis en mesure de le faire avant, mais je ne me souviens pas comment je l'ai fait, ou trouver documenté. Est-ce possible? Ou est-il possible d'écrire cette fonction de telle sorte qu'elle puisse être sortie sans utiliser un refcursor.
Je m'attends à plusieurs lignes à retourner et une vérification des données est effectuée dans la fonction avant qu'elle ne soit retournée. D'où la nécessité de l'utilisation d'une procédure stockée.