Auf der Suche nach einer kanonischen Antwort auf die Frage, warum Pakete in einer Oracle-Datenbank gegenüber eigenständigen Prozeduren und Funktionen bevorzugt werden sollten.
Vorteile von Paketen
Logische Gruppierung - Methoden, die zusammenarbeiten, können zu einer zusammenhängenden Einheit zusammengefasst werden, anstatt nur logisch gekoppelt, aber physisch getrennt zu sein.
Sichere private Methoden - Funktionen und Prozeduren können für das Paket privat gemacht und nur innerhalb des Pakets verwendet werden. Dies macht die öffentliche Oberfläche einfacher und sicherer.
Rechtemanagement - Berechtigungen können einmal für eine Gruppe von Verfahren gewährt werden , die zusammenarbeiten , anstatt separat für jede Prozedur / Funktion erforderlich.
Sicheres Verpacken - Verpackte Pakete sind schwieriger zu entpacken als verpackte Funktionen / Prozeduren.
Vereinfachte Benennung - Ein größerer Namespace ermöglicht einfachere Namen, die in anderen Paketen wiederverwendet werden können.
Bessere Leistung - Pakete können kompiliert und vollständig in den Speicher geladen werden, anstatt wie bei anderen Methoden stückweise. Dieser Vorteil ist, wenn überhaupt, im Vergleich zu den anderen Vorteilen minimal.
Reduzierte Invalidierung - Das Ändern eines Paketkörpers macht Abhängigkeiten nicht ungültig wie das Ändern einer Funktion oder Prozedur.
Einzigartige Funktionen - Paketvariablen, Paketkonstanten, Initialisierung, Sitzungsstatus, Paketkommentare und überladene Methoden.
Referenzen:
11.2 Concepts Guide
Frage an Tom
StackOverflow.com Frage zur
Paketleistung Auspacken der PL / SQL-Präsentation (pdf)