Bonjour tout le monde :)
voilà, j'ai écris une fonction dans laquelle il ya une requête qui retourne une table.
ma question est: que doit être le type de retour de ma fonction :question:
merci d'avance ;)
Version imprimable
Bonjour tout le monde :)
voilà, j'ai écris une fonction dans laquelle il ya une requête qui retourne une table.
ma question est: que doit être le type de retour de ma fonction :question:
merci d'avance ;)
une table PL/SQL ?
oui, c bien ça,
bon voila le code de ma fonction pr que ça soit plus clair
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 create or replace function ChampsTrigger (NumSequence in champs081.n_sequence%type, NumChamp in champs081.champ%type) return --?-- is TYPE ValeurCollection IS TABLE OF champs081.valeur%type ; varValeur ValeurCollection; begin select champs081.valeur Bulk collect into varValeur from champs081 inner join tab081 on (champs081.n_sequence = tab081.n_sequence) where (champs081.champ = NumChamp) and (champs081.n_sequence = NumSequence); return ( varValeur ); end;
Il faut créer le Type en Base
exemple
Créer ta fonction qui renvoie ce typeCode:
1
2
3
4
5
6
7
8
9 CREATE OR REPLACE TYPE TYP_REC_STOCK AS OBJECT ( DATE_PREV DATE, QTE NUMBER ) CREATE OR REPLACE TYPE TYP_TAB_STOCK AS TABLE OF TYP_REC_STOCK
Code:
1
2 FUNCTION F_STOCK (p_article IN VARCHAR2) RETURN TYP_TAB_STOCK PIPELINED;
Puis faire unCode:
1
2
3
4
5
6
7
8
9
10
11 FUNCTION F_STOCK (p_article IN VARCHAR2) RETURN TYP_TAB_STOCK PIPELINED IS BEGIN FOR r IN (Select * from Tstock where article = p_article) LOOP PIPE ROW( TYP_REC_STOCK (date_prev => r.date_liv_prev, qte => v_qte)); END LOOP; RETURN ; END;
Code:
1
2
3 SELECT * FROM TABLE(F_STOCK(monarticle)) WHERE ...
merci beaucoup, je commence à voir clair
mais est ce que vous pouvez m'expliquer un peu votre exemple, la fonction elle fait quoi, et puis le "pipelined" :?