C/C++ / CGI / Sieć Novell / PHP / Java / SQL / Oracle / WebSphere MQ / WebSphere Message Broker / JavaScript / IT Quiz
...

Pakiety

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


  Autorem serwisu jest Marcin Kasiński
Wszelkie prawa zastrzeżone. All rights reserved.
powered by technology... linux eclipse java php