Procitao sam ovo sa Ask Tom linka, uglavnom se vrti oko toga da su ljudi koristili temp tabele (u drugim bazama) da bi veliki query podelili na manje, praveci privremene result set-ove, pa onda to spajali na kraju...
Takodje, na kraju se pominje WITH sa kojim nemam iskustva (postoji izgleda od verzije 11.1), za koji na
http://psoug.org/reference/with.html kazu "A WITH clause is really best used when the result of the WITH query is required more than one time in the body of the query such as where one averaged value needs to be compared against two or three times.", sto pretpostavljam da znaci da baza sama odlucuje sta ce i kada staviti u neku temp tabelu (TK: "and they can and will when necessary create temporary tables for that query").
Dakle, to je neka opsta prica o temp tabelama i kako se koriste za velike upite. Ovde se radi o necemu drugacijem: potrebno je izvrsiti racun (sa petljom) pre vracanja podataka, i za to zaista nema nista bolje od pipelined funkcija, kao sto je vec receno.
Sto se tice zabune oko naziva temporary, ocigledno da se u Oracle-u to odnosi na podatke u tabeli a ne na samu tabelu. Dakle, tabela postoji dok se ne dropne :) a podaci su ograniceni na sesiju. Iz reference-a: "Specify GLOBAL TEMPORARY to indicate that the table is temporary and that its
definition is visible to all sessions with appropriate privileges. The
data in a temporary table is visible only to the session that inserts the data into the table.".