PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Récupérer le résultat d'une requête éxécutée dans une procédure stockée

| Récupérer le résultat d'une requête éxécutée dans une procédure stockée

Par loquace le 07/06/2007 - 10:25

En php on peut utiliser directement une requête pour obtenir un recordset.
Cependant si l'on veux récupérer un recordset via une procedure stockée -- pour appliquer des traitements sur des paramètres avant d'exécuter la requête par exemple -- on peut créer une fonction équivalent à celle qui suit.

L'exemple renvoie un setof de la variable out nommée myset et qui est definie du type du champs convoité dans la table. (On utilise %TYPE pour recupérer le type du champs).

CREATE OR REPLACE FUNCTION ma_fonction(out myset ma_table.mon_champ_pk%TYPE)
RETURNS setof integer AS
$BODY$
DECLARE
-- On crée une variable de type record , on peut aussi suivant le besoin créer une variable de type %ROWTYPE
myrecord record;
BEGIN

FOR myrecord in SELECT mon_pk FROM ma_table loop
myset:= myrecord.mon_pk;
RETURN NEXT;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;

ALTER FUNCTION ma_fonction(out myset demande.demande_pk%TYPE) OWNER TO mon_user;

Pour récupérer l'ensemble des resultat on selectionne la procedure ainsi:

SELECT * FROM  ma_fonction();

Les mots importants sont :
- setof
- record
- %TYPE et %ROWTYPE
- for...loop
- return next

© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.