PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 03/02/2009 12:37:46

slash
Membre

Fonction retournant setof record issu d'un Fetch

Bonjour à tous,

J'écris ce petit post, car j'avoue que mes connaissances en PostGreSQL sont limitées étant donné que je débute. Après quelques heures de recherche sur les curseurs, je rencontre un problème.

Le contexte :
Je développe une application qui communique avec une base PostGreSQL. Une des fonctions de la base, par l'appel d'une procédure stockée, est de renvoyer un grand nombre d'enregistrements.

Pour ne pas surcharger la mémoire, et étant donné que je n'aimerai afficher que 5 lignes des résultats par 5 lignes, je cherche une solution propre pour paginer la réponse de cette fonction.
Les curseurs semblent bien appropriés.

Mon problème :
J'ai une procédure stockée qui retourne un curseur sur le résultat de ma requête. Jusque là, pas de pb. Maintenant, j'aimerai développer une fonction Next(Nbre d'enregistrements à afficher), et Previous(Nbre d'enregistrements à afficher).
J'aimerai que ces fonctions ne prennent pas de paramètre curseur en entrée, et qu'elles me renvoie, respectivement, les 5 enregistrements suivant, et les 5 enregistrements précédent.

J'aurai imaginé faire : FOR record_var in FETCH FORWARD 5 IN mon_curseur LOOP RETURN NEXT record_var END LOOP;
mais PostGreSQL m'insulte quand je tente de créer cette fonction next()/previous().

Est-ce la meilleure façon de procéder?

Merci,
Mathieu.

Hors ligne

#2 03/02/2009 15:16:56

gleu
Administrateur

Re : Fonction retournant setof record issu d'un Fetch

Bonne question. Avoir le message d'erreur et le code de la fonction permettrait de mieux comprendre le problème.


Guillaume.

Hors ligne

#3 03/02/2009 15:23:09

slash
Membre

Re : Fonction retournant setof record issu d'un Fetch

Bonjour gleu,
décidément c'est toi qui est d'astreinte sur ce forum? ;o)

Non en fait j'ai contourné le problème.
En fait je vais utiliser le curseur directement depuis mon programme en C.

A l'origine je voulais gérer le tout dans PostGreSQL mais apparemment on ne peut pas.

Hors ligne

Pied de page des forums