pipelined functions in oracle
Eine sehr gute Erklärung zu piplined functions findet sich bei oracle-developer.net . Es werden verschiedene Möglichkeiten beschrieben und auf die Unterschiede zwischen materialisierten und pipelined Funktionen hinsichtlich Antwortverhalten und Speicherbedarf eingegangen. Der für mich wichtigste Punkt: Es gibt die Möglichkeit, ohne (PL-Paket-)externe Datentypen auszukommen. D.h. alle benötigten Struktuen können innerhalb eines PL-Paketes deklariert werden. Dies sollte die Wartung deutlich vereinfachen. Mit folgenden Zeilen werden alle benötigten Objekte in der Paket-Spezifikation angelegt: TYPE foo_rt IS RECORD (); --Record-Typ anlegen TYPE foo_ntt IS TABLE OF foo_rt; --Collection definieren FUNCTION my_pipeline ( -- pipelined function definieren p1 in varchar2, -- Parameter 1 p2 in number) -- Parameter 2 RETURN foo_ntt PIPELINED; Im Paket-Body wird die eigentliche Logik hinterlegt: FOR r_tmp IN c_sql LOOP PIPE ROW (r_tmp); END LOOP; RETURN; Aufgerufen wird das ganze am Ender per s...