Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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
Pages : 1