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 |
… |