Pipelined
funktioner, ett mycket klassiskt exempel är där du gör ett SELECT * FROM table name
i SQL*Plus
. Vad som händer är att Oracle strömmar data från tabellen...
Som att titta på en video på YouTube.
Vänligen notera ordet 'Streaming '.. Och i vår funktion definierar vi hur många rader vi streamar.. Varje streamad raden är omedelbart tillgänglig för den som ringer. Pipelining
betyder i lekmannatermer, låt mig inte vänta tills du är klar, ge mig vad du än har och fortsätt att bearbeta och uppdatera mig samtidigt.
I din senaste procedur, efter att ha pippat varje rad, initierar du en sleep
ring för 10s
, så posten är Streamad till den som ringer var 10:e:e.
Och en normal tabellfunktion kommer att fortsätta att vänta tills allt bearbetningsarbete är klart, och sedan returnerar den referensen till resultatuppsättningsmarkören.
pipelined-funktioner, de hävdar att de sparar minne, är genom flushing
innehållet omedelbart, och därför är bufferten som används alltid minimal, medan antalet tur och retur blir högre.