Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Przykład funkcji potokowej Oracle

Ten samouczek Oracle pokazuje, jak utworzyć funkcję Pipelined. Wykonaj następujące kroki:

1. Utwórz obiekt typu

W przypadku funkcji potokowej Oracle musimy mieć obiekt typu, przez który możemy wysyłać wiersze. Utwórz jeden jak poniżej:

CREATE OR REPLACE TYPE t_list AS TABLE OF VARCHAR2(2000);
/

2. Utwórz funkcję składowaną jako PIPELINED

Poniższa funkcja używa powyższego typu do zwracania wartości. A wiersze tworzą jeden po drugim przez kursor na podstawie zapytania 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. Wywołaj funkcję za pomocą zapytania SQL

Teraz wreszcie możemy wywołać powyższą funkcję i uzyskać żądane wiersze:

select * from TABLE(get_values());

Wyjście:

COLUMN_VALUE
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
LINE8
LINE9
LINE10
10 rzędów po 20
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przewodnik krok po kroku dotyczący instalacji MySQL w systemie Windows

  2. Zrzut zużycia kursora

  3. Jak używać typu tabeli w instrukcji SELECT FROM?

  4. BatchUpdateException:partia nie zostanie zakończona

  5. Obrót w Oracle 11g