Ce tutoriel Oracle montre comment créer une fonction Pipeline. Suivez ces étapes :
1. Créer un objet Type
Pour la fonction en pipeline d'Oracle, nous devons avoir un objet de type à travers lequel nous pouvons envoyer les lignes. Créez-en un comme ci-dessous :
CREATE OR REPLACE TYPE t_list AS TABLE OF VARCHAR2(2000); /
2. Créer une fonction stockée comme PIPELINED
La fonction suivante utilise le type ci-dessus pour renvoyer les valeurs. Et les lignes produisent une par une via un curseur basé sur une requête SQL :
CREATE OR REPLACE FUNCTION get_values RETURN t_list
PIPELINED
IS l_list t_list;
w_row_count NUMBER := 0;
BEGIN
for cur in
( SELECT 'LINE' || level as value
FROM dual CONNECT BY
level <= 20
) loop
PIPE ROW ( cur.value );
w_row_count := w_row_count + 1;
end loop;
dbms_output.put_line('Total ' || w_row_count || ' rows selected');
END get_values;
/
3. Appelez la fonction à l'aide d'une requête SQL
Enfin, nous pouvons appeler la fonction ci-dessus et obtenir les lignes souhaitées :
select * from TABLE(get_values());
Sortie :
| COLUMN_VALUE |
|---|
| LINE1 |
| LINE2 |
| LINE3 |
| LINE4 |
| LINE5 |
| LINE6 |
| LINE7 |
| LINE8 |
| LINE9 |
| LINE10 |
| … |