Bonjour,
Voila je cherche a faire une chose un peu particulière, je veux faire une vur sur une fonction utilisant des parametres, mais passer ces parametres dans la WHERE clause lors d'une requete sur ma vue.
Je suis obligé de passer par la WHERE clause car en fait j'utilise un outil qui traduit automatiquement mes requêtes en SQL, et cet outil n'est normalement fait que pour faire des requêtes simple sur des tables ou des vues.
Voici un exmple de code que j'utilise pour créer une fonction:
1 2 3 4 5 6 7 8 9 10
| create or replace type virtual_table_type AS OBJECT (item_id number(6), internal_text varchar(32));
create or replace type virtual_table_type_set as table of virtual_table_type;
create or replace function virtual_table( p_num_rows in number ) return virtual_table_type_set PIPELINED IS
begin
for i in 1 .. p_num_rows
loop
pipe row( virtual_table_type(i, 'TEST' || TO_CHAR(i)) );
end loop;
return; -- note return with no value!
end; |
qui donne le resultat suivant quand on l'appel
1 2 3 4 5 6 7 8 9
| select * from TABLE( virtual_table(5) );
ITEM_ID INTERNAL_TEXT
------- -------------
1 TEST1
2 TEST2
3 TEST3
4 TEST4
5 TEST5 |
J'aimerais donc créer une vue sur cette fonction afin d'obtenir le même résultat, l'appel à la vue se ferait comme ça :
SELECT * FROM view_virtual_table WHERE p_num_rows = 5
On obtiendrais alors le même résultat que précédement.
Je ne sais pas si c'est possiblt ou non ou alors si je dois créer d'autres object dans ma base pour y arriver, peut en passant pas des table temporaire ou autres.
Merci d'avance pour votre aide:
Pierre
Partager