RE: PL-PGSQL : Procédure stockée simple

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

Browse pgsql-fr-generale by date

  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