2012-10-17 8 views
10

Szukałem google, ale nie znalazłem satysfakcjonującej odpowiedzi na pytanie, dlaczego powinienem używać pakietów.Oracle - Dlaczego powinienem używać pakietów zamiast samodzielnych procedur lub funkcji

Wiem, że pakiet to pakiet procedur, funkcji i różnych zmiennych. Jak rozumiem, rodzaj odpowiada obiektowi w OOP. Oczywiście nie ma to jak tworzenie instancji różnych instancji pakietu, aby każda instancja miała inne wartości właściwości i zachowywać się inaczej.

Jaka jest zaleta korzystania z pakietów, gdy mogę po prostu utworzyć niezależną procedurę i zadzwonić do niej niezależnie?

+2

[opinia Tom Kyte za] (http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:7452431376537) –

+3

Paczki są ** nie ** o "obiektach". Oracle (obiekt) 'TYPE' z możliwością posiadania własnych metod i konstruktorów jest odpowiednikiem obiektu w OOP. –

Odpowiedz

23

Pakiety zapewniają następujące korzyści:

  1. spójności: wszystkie procedury i funkcje odnoszące się do SPECYFICZNIE podsystemu są w jedną całość programu. Jest to po prostu dobra praktyka projektowa, ale łatwiej też nią zarządzać, np. w kontroli źródła.
  2. Stałe, podtypy i inne przydatne rzeczy: więcej jest PL/SQL niż procedur przechowywanych. Wszystko, co możemy zdefiniować w specyfikacji pakietu, można udostępnić innym programom, na przykład zdefiniowanym przez użytkownika wyjątkom.
  3. Przeciążenie: możliwość zdefiniowania procedury lub funkcji o tej samej nazwie, ale różnych sygnaturach.
  4. Bezpieczeństwo: definiowanie prywatnych procedur w ciele pakietu, z których może korzystać tylko pakiet, ponieważ nie są one ujawnione w specyfikacji.
  5. Udostępnianie wspólnego kodu: kolejna korzyść z prywatnych procedur.
  6. Musimy przyznać EXECUTE tylko na opakowaniu, a nie na kilku procedurach.
10

Jak opisano w Oracle docs, pakiety są dobre ze względu na:

  • modułowość
  • łatwiejsze projektowanie aplikacji
  • informacje ukrywanie
  • dodana funkcjonalność
  • lepszą wydajność

Szczegóły o n każdy powód jest wyjaśniony w dokumentach.

Powiązane problemy