Vous n'êtes pas identifié(e).

#1 19/02/2010 10:56:09

mortimer.pw
Membre

Afficher un refcursor

Bonjour à tous,

Je travaille avec PostgreSQL 8.4.2 sous CentOS 5.2.

Je voudrais afficher le résultat d'une fonction qui retourne un REFCURSOR sous psql ou PgAdmin.

Avez-vous une solution ?

Merci pour vos réponses.

Hors ligne

#2 19/02/2010 11:03:57

gleu
Administrateur

Re : Afficher un refcursor

Il y a certainement une solution à un problème. Mais comme aucun problème n'est décrit, il va être difficile de répondre.

Le seul truc qui me vient en tête, c'est que vous n'êtes probablement pas dans une transaction. Or il faut être dans une transaction pour utiliser un curseur.


Guillaume.

Hors ligne

#3 19/02/2010 11:39:07

mortimer.pw
Membre

Re : Afficher un refcursor

Bonjour,

Effectivement, peut-être en détaillant mon problème ce sera plus clair.

J'ai un développeur PHP qui me demande une fonction Pl/PgSQL.
Cette fonction doit :
   - Retourner une liste de N derniers clients,
   - Prendre en entrée un Curseur et un Entier(N),
   - Retourner le Curseur.


J'ai créé la fonction :

CREATE OR REPLACE FUNCTION DernieresLignes(REFCURSOR,NUMERIC) RETURNS REFCURSOR AS '
DECLARE
BEGIN
   OPEN $1 FOR
   SELECT C.*
   FROM Client C
   ORDER BY C.id_client DESC LIMIT TO_NUMBER($2);
   RETURN $1;
END;
' LANGUAGE 'plpgsql';

Pour vérifier que ma fonction marche et avant de la founir au développeur, je souhaite visualiser le résultat de la fonction (sous psql ou PgAdmin).

Comment faire ?

Merci pour votre aide.

Hors ligne

#4 19/02/2010 12:13:44

gleu
Administrateur

Re : Afficher un refcursor

BEGIN;
SELECT DernieresLignes('toto',10);
FETCH ALL IN toto;
COMMIT;

Exemple copié/collé de la documentation : http://docs.postgresql.fr/8.4/plpgsql-cursors.html

À faire dans psql, car pgAdmin auto-commit les requêtes à mon souvenir.


Guillaume.

Hors ligne

#5 19/02/2010 12:23:19

mortimer.pw
Membre

Re : Afficher un refcursor

J'ai bien lu la Doc mais en fait j'étais parti à fond sous PgAdmin.

Merci encore Guillaume.

Hors ligne

#6 19/02/2010 13:21:36

gleu
Administrateur

Re : Afficher un refcursor

pgAdmin permettra de le faire dans la prochaine version.


Guillaume.

Hors ligne

Pied de page des forums