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 |
… |