sql >> Databasteknik >  >> RDS >> Oracle

Oracle Pipelined funktion Exempel

Den här Oracle-handledningen visar hur man skapar Pipelined-funktion. Följ dessa steg:

1. Skapa ett typobjekt

För Oracle pipelined funktion måste vi ha ett typobjekt genom vilket vi kan skicka raderna. Skapa en enligt nedan:

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

2. Skapa en lagrad funktion som PIPELINED

Följande funktion använder ovanstående typ för att returnera värdena. Och rader producerar en efter en genom en markör baserat på en SQL-fråga:

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. Anropa funktionen med SQL-fråga

Nu äntligen kan vi anropa ovanstående funktion och kan få raderna efter önskemål:

select * from TABLE(get_values());

Utdata:

COLUMN_VALUE
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
LINE8
LINE9
LINE10
...
10 rader av 20
  1. Anslut bord från två olika servrar

  2. OPENROWSET accepterar inte variabler för sina argument (SQL Server)

  3. FieldShield SDK

  4. Hur frågar man efter databasnamn i Oracle SQL Developer?