Bonjour

je cherche à faire une fonction PLSQL avec 3 parametres d'entree

pcode,ddeb et dfin


et 1 de sortie cumul

ma tablestatus
mes champs code,datestat,stat

ma tablecodes
mes champs code,libellé,type,categorie etc...


pour un code donné pour une periode de reference donnée (entre ddeb et dfin)

je veux la somme des durées d'arret



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
select code,f(code,:ddeb,:dfin) durée_arret
from tablecodes

pour tous les codes de la tablecodes F(x) doit balayer la tablestatus et me ramener le cumul d'arret pour chaque code de la tablecodes pendant la periode definie dans les parametres 2 et 3 de la fonction


exemple pour un code donné


datestat,stat
"01/01/2009 10:00", "arret"
"01/01/2009 11:00" ,"marche"
"01/01/2009 11:30","arret"
"01/01/2009 12:30' ,marche"
"01/01/2009 14:00","arret"
"01/01/2009 15:30' ,marche"


pour une periode comprise entre ddeb= 01/01/2009 10:00 et dfin= 01/01/2009 14:00

f(code,:ddeb,:dfin)=120mn

si dfin = 01/01/2009 15;00 alors

f(code,:ddeb,:dfin) = 180mn

comment ecrire cette fonction PLSQL f(x) ?