SQL PL SubRoutine
21 Septembre 2016 , Rédigé par Pam007 Publié dans #Sql
Dans une procédure ou fonction Sql,
il arrive que l'on ait un petit bout de code qui se répète à différents endroit :-((
En Rpg, on le collerai vite fait bien fait dans une fonction interne ou dans un sous-programme (exsr begsr endsr).
L'exemple en SQL PL ci-dessous simule - me semble t-il - un bon vieux sous-programme ;-))
Est-ce abuser des handlers !?
create or replace function milan / test
(p_zn1 dec(7), p_zn2 dec(7))
returns dec(7)
language sql
deterministic
no external action
specific milan / test
set option dbgview = *source
begin
declare zn3w dec(7) default 0;
declare iw dec(7) default 0;
declare exsr1w condition for '70001';
declare continue handler for exsr1w -- Attn : SubRoutine !
begin
set zn3w = zn3w + p_zn1;
set zn3w = zn3w + 1;
end;
bb:loop -- ceci est une boucle
set iw = iw + 1;
if iw > p_zn2
then
leave BB; -- Qu'il est triste de quitter Brigitte Bardot
end if;
signal exsr1w; -- Sorte d'Exsr... cf. en tête de programme
end loop;
return zn3w;
end;
-- Pour tester la fonction précédente :
values test(15, 15);
/image%2F1025633%2F20151122%2Fob_b0e74c_pam007i.png)