För att citera från "Fråga Tom Oracle":
pipelinerade funktioner är helt enkelt "kod du kan låtsas vara en databastabell"
pipelined-funktioner ger dig den (för mig fantastiska) förmågan att
select * from PLSQL_FUNCTION;
när som helst du tror att du kan använda det -- att välja * från en funktion, istället för en tabell, kan det vara "användbart".
När det gäller fördelar:en stor fördel med att använda en Pipeline-funktion är att din funktion kan returnera rader en i taget i motsats till att bygga hela resultatuppsättningen i minnet som en helhet innan den returneras.
Ovanstående ger den uppenbara optimeringen - minnesbesparingar från något som annars skulle ge stora resultat.
Ett ganska intressant exempel på att använda pipeline-funktioner är här
Det som verkar vara en bra användning av dem är ETL (extract/transform/load) - se till exempel här