Pakiety

Autor: Marcin Kasiński
21.01.2011 13:24:00 +0200

Pakiet jest obiektem grupującym logicznie połączone typy PL/SQL, podprogramy tworząc w ten sposób jeden moduł do obiektów którego możemy się dowoływać poprzez notację kropkową: x:=nazwa_pakietu.zmienna_zadeklarowana_w_pakiecie; Pakiet skłąda się z dwóch części. W pierwszej części (część specyfikacji) znajdują się deklaracje dostępne dla użytkownika (publiczne). W części BODY następujepełna definicja obiektów prywatnych. Część BODY nie jest wymagana.

Przykład:

Create Or Replace PACKAGE users_package AS
PROCEDURE adduser(name VARCHAR2, first_name VARCHAR2);
PROCEDURE deluser(userid NUMBER);
END users_package;
Create Or Replace PACKAGE BODY users_package AS
PROCEDURE adduser(name VARCHAR2, first_name VARCHAR2) IS
BEGIN
INSERT INTO users VALUES (users_seq.NEXTVAL, name, first_name);
END adduser;
PROCEDURE deluser(userid NUMBER) IS
BEGIN
DELETE FROM users WHERE id=userid;
END deluser;
PROCEDURE proc1 IS
BEGIN
...
END proc1;
END users_package;

W powyższym przykładzie zdefiniowaliśmy trzy prodecury w pakiecie, z tym że, tylko dwie z nich zadeklarowalismy jako publiczne (adduser i deluser) ponieważ tylko ich deklaracje znajdują się w części specyfikacji. Trzecia procedura proc1 nie może być wywoływana z zewnątrz przez uzytkowników. Może być jedynie wywoływane przez inne podprogramy z tego samego pakietu.

Ważną cechą pakietu jest ich wydajność. Kiedy następuje wywołanie podprogramu z pakietu po raz pierwszy cały pakiet jest ładowany do pamięci. Przy kolejnych odwołaniach do pakietu dane pobierane są z pamięci, a nie z dysku co redukuje częstotliwość operacji dyskowych.


powrót
Zachęcam do przedstawienia swoich uwag i opinii w polu komentarzy.

Komentarze

Dodaj Komentarz