Bonjour à tous,

J'ai une query qui me retourne une valeur de disponibilité par rapport à un lot de données.

En voici une version très simplifiée (pour la compréhension):
select sum(date2-date1) as Mavaleurfinale from matable.

J'aimerai en créer une fonction pour que ce même calcul soit disponible pour d'autres lots de données provenant de différentes tables.

Par exemple
select fGet_Availability(select startdate as date1, enddate as date2 from uneTable) from dual

select fGet_Availability(select dateA as date1, dateB as date2 from uneautreTable where colX = 'server1') from dual


avec une fonction (ou peut-être une procédure) dans un package qui serait quelque chose comme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
TYPE T_Avail_Record IS RECORD (StartDate date, EndDate date);
   TYPE InputRowset  IS TABLE OF T_Avail_Record;
 
FUNCTION fGet_Availability( InputRowset )
    RETURN NUMERIC
IS 
   t_Mavaleurfinale numeric;
 
BEGIN
 
    select sum(date2-date1) into Mavaleurfinale from InputRowset 
 
    RETURN (t_Mavaleurfinale);
 
END
Je n'ai trouvé sur aucun forum la possibilité de faire un SELECT sur un lot de donnée en entré de fonction.
Est-ce possible sous Oracle (version 11.2.0.3.0) ?

En espérant avoir été clair,
D'avance merci pour votre aide,
Eric.