Das ersetzen eines Teils einer Oracle-Paket
Muss ich ändern, eine Prozedur aus, die in einem Paket. Ich brauche zu berühren, sowohl die Erklärung und die Umsetzung. Als ich die Aufrechterhaltung patch-Dateien für jede änderung, ich möchte die änderungen minimal sein.
Kann ich update das Paket mit nur der geänderte Verfahren ( wenn ja, wie ? ) , oder muss ich die liefern das komplette Paket definition und Umsetzung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersetzen Sie das gesamte Paket, Spezifikation und body - Sie funktionieren nicht auf nur ein Teil eines Pakets.
Nur zu widersprechen jeder andere auch . . .
Technisch könnten Sie es tun - man könnte etwas schreiben, das würde in der patch-Datei, abrufen der vorhandenen package-Quellcode aus der Datenbank (mit USER_SOURCE), anwenden von patchen und dann kompilieren Sie das Paket mit EXECUTE IMMEDIATE.
Aber ich glaube nicht, dass es wäre eine sehr gute Idee - patch basiert die Festsetzung wird sehr schwer den überblick zu behalten, vor allem, wenn mehrere patches und mehrere Datenbanken beteiligt sind. Putting die ganze Datei in die source-control ist viel besser - der patch sollte noch klar erkennbar sein.
Wenn der patch ist zu einem third-party-Paket, wrappen Sie es so, dass alles in einer geraden nennen außer durch Patches. Oder setzen Sie Ihre patch in ein standalone-Paket, das ruft die erste. Es gibt noch eine Gefahr, dass eine Veränderung der original-Verpackung sein könnte, nicht kompatibel mit dem patch.
Können Sie nicht. Soweit ich mich erinnere, der einzige Weg, um Verweise auf Objekte-Invalidierung ist, nicht zu berühren Sie Ihr Paket Erklärung, und führen Sie nur
CREATE OR REPLACE PACKAGE BODY
.Seit der Erklärung der änderungen, die Sie vielleicht in Erwägung ziehen, das neue Verfahren in ein neues Paket, um zu vermeiden, berühren Sie das bestehende. Die Pakete mit der neuen version des Verfahrens angepasst werden muss sowieso, um die änderungen widerzuspiegeln, die in der Erklärung (es sei denn, es ist ein neuer parameter mit einem default-Wert).
Wenn Sie auf Oracle 11g und Sie minimieren möchten, invalidierungen anderer Objekte, machen Sie sicher, dass die neuen Erklärungen auf der Ende des Pakets die spec.