Este tutorial de Oracle muestra cómo crear una función canalizada. Sigue estos pasos:
1. Crear un objeto de tipo
Para la función canalizada de Oracle, debemos tener un objeto de tipo a través del cual podamos enviar las filas. Cree uno como se muestra a continuación:
CREATE OR REPLACE TYPE t_list AS TABLE OF VARCHAR2(2000); /
2. Crear una función almacenada como PIPELINED
La siguiente función usa el tipo anterior para devolver los valores. Y las filas se producen una a una a través de un cursor basado en una consulta 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. Llame a la función mediante consulta SQL
Ahora, finalmente, podemos llamar a la función anterior y obtener las filas deseadas:
select * from TABLE(get_values());
Salida:
| COLUMN_VALUE |
|---|
| LINEA1 |
| LINEA2 |
| LINEA3 |
| LINEA4 |
| LINEA5 |
| LINEA6 |
| LINEA7 |
| LINEA8 |
| LINEA9 |
| LINEA10 |
| … |