Aller au contenu

Les structures itératives et répétitives#

Les boucles permettent d'exécuter des instructions plusieurs fois. Cette répétition peut se faire en fonction d'une condition ou d'un nombre défini d'itérations.

Structure itérative DO..WHILE (RÉPÉTER)#

La boucle RÉPÉTER (ou DO..WHILE) s'exécute au moins une fois, puis continue tant que la condition spécifiée n'est pas vérifiée.

Structure itérative RÉPÉTER
do
$$
declare
    n integer = 9;
    k integer;
begin
    raise notice 'Table de multiplication de %', n;
    k = 1;
    loop
        raise notice '% * % = %', k, n, k*n;
        k = k + 1;
        exit when k > 5;
    end loop;
end;
$$ language plpgsql;

Structure répétitive FOR (POUR)#

La boucle POUR s'exécute un nombre d'iétarions donné.

Structure itérative POUR
do
$$
declare 
    _query = text;
begin
    for k in 1..10 loop
        raise notice '%', k;
        _query = 'perform random_function(now()::date - ' || k || ');';
        execute _query;
    end loop;
end;
$$;

Itérer sur des valeurs#

PL/PLSQL permet également d'itérer sur les enregistrements d'une requête

Itérer sur une table
do
$$
declare
    item record;
begin
    for item in select a from (values (1), (2), (3)) s(a) loop
        raise info '%', item.a;
    end loop;
end;
$$;

Itérer sur une table#

Il est possible d'itérer sur les lignes d'une table ou d'une requête.

Itérer sur une table
do
$$
declare
    _row record;
begin

    for _row in (select region, segment, pct::int from bitmp.jk_tmp_sub_active_dactive30d_effectif) loop
        raise notice 'yes % - % - %', _row.region, _row.segment, _row.pct;
    end loop;
end;
$$;


Dans la prochaine section, nous aborderons les fonctions.