Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Rückgabe einer 'Tabelle' (ohne vordefinierte Spaltennamen) aus einer PL/SQL-Funktion

Ich würde stark vermute mal, dass du das nicht willst. Das dynamische Erstellen von Objekttypen und der Aufbau dieser Art von Flexibilität in PL/SQL ist fast immer ein Rezept für den Ruin. Am Ende schreiben Sie überall extrem kompliziertes dynamisches SQL (sowohl in den Aufrufern als auch in Ihren Funktionen), was das Lesen und Debuggen Ihres Codes erheblich erschwert. Wenn Ihr Code so komplex wird, sind Sie besser dran, Frameworks zu schreiben, die den Code generieren, aber das lässt Sie mit dem viel, viel schwierigeren Problem zurück, Code zu schreiben, der Code generiert, der Ihr Problem löst, anstatt nur Code zu schreiben, der Ihr Problem löst.

Das heißt, wenn Sie wirklich, wirklich entschlossen sind, ist es möglich, einen zu bauen vollständig generische Pipeline-Tabellenfunktion . Das erfordert einige tiefgreifende Zauberei mit dem Oracle Data Cartridge-Framework. Es ist ziemlich cool. Aber die Anzahl der Leute, die diese Art von Code realistisch unterstützen und erweitern könnten, ist sehr klein.

Mit etwas weniger Zauberei (aber immer noch viel, viel mehr, als ich für praktisch jede Organisation vorschlagen würde) können Sie ein flexible Pipeline-Tabellenfunktion die auf der Rückgabe von Typen aus einer vordefinierten Typhierarchie beruht. Das ist eher vertretbar, setzt aber voraus, dass Sie Ihre Typhierarchie im Voraus aufbauen können.