Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Beispiel für eine Oracle-Pipeline-Funktion

Dieses Oracle-Lernprogramm zeigt, wie Sie eine Pipeline-Funktion erstellen. Befolgen Sie diese Schritte:

1. Erstellen Sie ein Type-Objekt

Für die Oracle-Pipelinefunktion benötigen wir ein Typobjekt, über das wir die Zeilen senden können. Erstellen Sie eines wie folgt:

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

2. Erstellen Sie eine gespeicherte Funktion als PIPELINED

Die folgende Funktion verwendet den obigen Typ, um die Werte zurückzugeben. Und Zeilen werden nacheinander durch einen Cursor basierend auf einer SQL-Abfrage erzeugt:

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. Rufen Sie die Funktion mit einer SQL-Abfrage auf

Jetzt können wir endlich die obige Funktion aufrufen und die Zeilen wie gewünscht erhalten:

select * from TABLE(get_values());

Ausgabe:

COLUMN_VALUE
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
LINE8
LINE9
LINE10
10 Reihen à 20