From: | "Jerome VILLAFRUELA" <Jerome(dot)VILLAFRUELA(at)yoni(dot)fr> |
---|---|
To: | <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | RE: PL-PGSQL : Procédure stockée simple |
Date: | 2005-07-08 07:34:23 |
Message-ID: | ED4F87518BA2B540873CC502D43068D5414E70@srvexch.seyssinet.rfi.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Anthony Stéphan écrivait le jeudi 7 juillet 2005 17:34 :
[...]
>Je cherche à faire quelque chose de très simple : récupérer des enregistrements
>dans une table avec un SELECT (dans ce cas de figure, une seule colonne
>m'intéresse mais bon ce sera pas toujours le cas) et les retourner vers PHP.
>Evidemment je peux faire ça sans procédure stockée mais bon vu que j'ai
>commencé à en faire quelques unes, j'aime autant poursuivre dans cette voie
>et tout séparer convenablement.
>
>Je suppose qu'il faut dans la procédure : déclarer un tableau, faire la
>requêtre souhaitée, récupérer les résultats, les mettre dans le tableau et
>retourner ce tableau.
Exemple de fonction renvoyant un ensemble de lignes :
(tiré de http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/docs/tsearch2-guide.html)
Il faut d'abord créer un type décrivant les informations retournées par la fonction :
=# CREATE TYPE finddoc_t AS (id INTEGER, headline TEXT, rank REAL)
Utiliser le mot clé SETOF pour indiquer que la fonction va renvoyer un ensemble de lignes :
=# CREATE FUNCTION finddoc(text) RETURNS SETOF finddoc_t LANGUAGE sql AS '
SELECT id, headline(doc, q), rank(vector, q)
FROM docs, to_tsquery($1) AS q
WHERE vector @@ q ORDER BY rank(vector, q) DESC'
La fonction s'utilise ensuite dans un ordre select :
SELECT * FROM finddoc('passage|crawl')
ce qui ne pose pas de problème en PhP.
--
Jérôme Villafruela
RFI Informatique
ZI Percevalière - 7410
38174 SEYSSINET-PARISET
Tél: 04 76 84 25 84
From | Date | Subject | |
---|---|---|---|
Next Message | Sylviane Molinet | 2005-07-08 12:34:52 | dbdesigner |
Previous Message | Francois Suter | 2005-07-08 07:21:45 | Fwd: PL-PGSQL : Procédure stockée simple |