Vous n'êtes pas identifié(e).
Pages : 1
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
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
Merci gleu pour votre disponibilité
ça résous mon problème.
Hors ligne
Pages : 1