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.

index suite…