PostgreSQL La base de donnees la plus sophistiquee au monde.

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

cookbook:recuperer_resultat_requete_executee_dans_procedure_stockee [2008/10/14 20:31] – créée ioguixcookbook:recuperer_resultat_requete_executee_dans_procedure_stockee [2008/10/15 16:58] (Version actuelle) – effacée ioguix
Ligne 1: Ligne 1:
-====== Récupérer le résultat d'une requête exécutée dans une procédure stockée ====== 
  
-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 procédure 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) : 
- 
-<code sql>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;</code> 
- 
-Pour récupérer l'ensemble des résultats on sélectionne la procédure ainsi : 
- 
-<code sql>SELECT * FROM  ma_fonction();</code> 
- 
-Les mots importants sont : 
-  * setof 
-  * record 
-  * %TYPE et %ROWTYPE 
-  * for...loop 
-  * return next 
- 
--- \\ 
-loquace le 07/06/2007 
 
cookbook/recuperer_resultat_requete_executee_dans_procedure_stockee.1224009075.txt.gz · Dernière modification : 2008/10/14 20:31 de ioguix