Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Exemplo de função de pipeline do Oracle


Este tutorial do Oracle mostra como criar a função Pipelined. Siga esses passos:

1. Criar um objeto de tipo


Para a função de pipeline do Oracle, devemos ter um objeto de tipo por meio do qual podemos enviar as linhas. Crie um como abaixo:
CREATE OR REPLACE TYPE t_list AS TABLE OF VARCHAR2(2000);
/

2. Crie uma função armazenada como PIPELINED


A função a seguir usa o tipo acima para retornar os valores. E as linhas são produzidas uma a uma por meio de um cursor baseado em uma 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. Chamar a função usando consulta SQL


Agora, finalmente, podemos chamar a função acima e obter as linhas conforme desejado:
select * from TABLE(get_values());

Saída:

COLUMN_VALUE
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
LINE8
LINE9
LINE10
10 linhas de 20