Tant que …
Ou la boucle while qui permet d’exécuter un code tant qu’une condition est vraie:
create or replace function rev(text)
returns varchar
as $$
DECLARE
a_value alias for $1;
v_value text;
v_return text;
v_tmp text;
BEGIN
v_value = a_value;
WHILE LENGTH(v_value) > 0 LOOP
select into v_tmp substring(v_value,length(v_value),length(v_value));
select into v_return concat(v_return,v_tmp);
select into v_value substring(v_value,1,length(v_value) -1);
END LOOP;
return v_return;
END
$$ language plpgsql;
La fonction rev() qui, une fois insérée en base, permet de retourner une string inversée:
tutorial=> select rev('abc');
rev
-----
cba
(1 row)
À noter que PostgreSQL propose déjà la fonction reverse() pour cela.