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 23/04/2016 22:09:33

pljavabruno
Membre

Boucle for en pl/pgsql

Bonjour,
j'ai un soucis sur la boucle for en pl/pgsql, en fait j'ai une table dans ma base de données et je souhaite lire la colonne libelle et formater le résultat dans une chaîne de caractère et retourné cette chaîne.

mais je ne parviens pas à concaténer les valeurs de ma colonne dans une chaîne de caractère. voici ma requette


CREATE OR REPLACE FUNCTION personnel(
    IN i integer,
    OUT resultat varchar)
  RETURNS varchar AS
$BODY$
DECLARE
    resultat varchar = null;
BEGIN
FOR resultat IN
(
  select
  libelle
  from personne
  where idperson = i
)
LOOP
    $2:= resultat;
    --return;
END LOOP;
return;
END;
$BODY$
LANGUAGE plpgsql




merci  de m'accorder votre soutien.

Hors ligne

#2 24/04/2016 16:28:25

gleu
Administrateur

Re : Boucle for en pl/pgsql

Je vois plusieurs problèmes :
1. vous ne faites aucune concaténation (remplacer $2 = resultat par $2= $2 || resultat)
2. de toute façon, vous donnez une valeur NULL par défaut à résultat, et quelque chose concaténé à du NULL donnera du NULL... donc initialiser resultat à une chaîne vide ou autre chose, mais pas à NULL.

Sans compter que cette fonction pourrait être remplacée par une seule requête SQL du type :

select string_agg(libelle, ' ') from personne where idperson = i

Guillaume.

Hors ligne

#3 25/04/2016 14:23:05

pljavabruno
Membre

Re : Boucle for en pl/pgsql

Merci gleu  pour votre disponibilité

ça résous mon problème.

Hors ligne

Pied de page des forums