sql >> Base de Datos >  >> RDS >> Oracle

Ejemplo de función canalizada de Oracle

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
10 filas de 20