sql >> Database >  >> RDS >> Oracle

Voorbeeld van Oracle Pipelined-functie

Deze Oracle-zelfstudie laat zien hoe u een Pipelined-functie kunt maken. Volg deze stappen:

1. Maak een Type Object

Voor de Oracle-pipelinefunctie moeten we een typeobject hebben waardoor we de rijen kunnen verzenden. Maak er een zoals hieronder:

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

2. Maak een opgeslagen functie als PIPELINED

De volgende functie gebruikt het bovenstaande type om de waarden te retourneren. En rijen produceren één voor één door een cursor op basis van een SQL-query:

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. Roep de functie aan met behulp van SQL-query

Nu kunnen we eindelijk de bovenstaande functie aanroepen en de rijen naar wens krijgen:

select * from TABLE(get_values());

Uitvoer:

COLUMN_VALUE
LINE1
LINE2
LINE3
LINE4
LINE5
LINE6
LINE7
LINE8
LINE9
LINE10
10 rijen van 20
  1. Bekijk het laatste nieuws over Microsoft Access, inclusief Access 2022!

  2. NAMEN INSTELLEN utf8 in MySQL?

  3. Postgresql - back-updatabase en herstel op andere eigenaar?

  4. UUID-botsingsrisico met verschillende algoritmen