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.