Bonjour j'ai un petit probleme lors de l'execution d'une fonction pipelined. J'ai utilisé le tutorial présent sur le site, mais il y a quelque chose que je n'arrive pas a debugguer. Voici mon code:
A coté de cela j'ai un table VISA dans la quelle je peux recuperer dateEntree et dateSortie . Mon but est de retourner une table avec tous les mois qui ont été visités pour ensuite faire une statistiques.
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 CREATE OR REPLACE TYPE moisVisites AS OBJECT (numMois NUMBER); CREATE OR REPLACE TYPE periodes AS TABLE OF moisVisites; CREATE OR REPLACE FUNCTION periodeVisitees (curseur IN SYS_REFCURSOR) RETURN periodes PIPELINED IS moisDepart NUMBER; moisRetour NUMBER; moisV := moisVisites(NULL); Rvisa visa%rowtype; BEGIN LOOP FETCH curseur INTO Rvisa; EXIT WHEN curseur%NOTFOUND; moisDepart :=to_char(to_date(RVisa.dateEntree,'DD/MM/YYYY'),'MM'); moisRetour :=to_char(to_date(RVisa.dateSortie,'DD/MM/YYYY'),'MM'); IF (moisDepart > moisRetour) THEN FOR x in moisDepart..12 LOOP moisV.numMois := x; PIPE ROW(moisV); END LOOP; FOR x in 1..moisRetour LOOP moisV.numMois := x; PIPE ROW(moisV); END LOOP; ELSE FOR x in moisDepart..moisRetour LOOP moisV.numMois := x; PIPE ROW(moisV); END LOOP; END IF; END LOOP; RETURN ; END; /
La fonction est bien créee, mais lorsque je fais :
j'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM TABLE(periodeVisitees(CURSOR(select * from Visa)));
type de données incohérents , obtenu : - ; attendu - ;
Je n'arrive pas a voir d'ou vient l'erreur, quelqu'un aurait t-il une idée pour m'aider a avancer ??
En vous remerciant.
J'utilise ORACLE 10g
Partager