cw8 1stud


Ćwiczenie 8_1

I. PAKIETY

PL/SQL umożliwia zgrupowanie wszystkich logicznie powiązanych ze sobą podprogramów, zmiennych, stałych, kursorów i in. w ramach jednego obiektu, zwanego pakietem. Pakiety mogą być kompilowane i przechowywane w bazie danych, dzięki czemu z ich zawartości mogą korzystać aplikacje.

Każdy pakiet składa się z dwóch części:

Część specyfikacji jest interfejsem do zawartości pakietu przeznaczonym dla aplikacji. Wewnątrz specyfikacji deklaruje się obiekty publiczne, z których może korzystać zarówno pakiet, jak i aplikacje. Zmienne i stałe zadeklarowane w części specyfikacji zachowują swoje wartości na czas trwania sesji.

Ciało pakietu implementuje specyfikację - definiuje kursory i podprogramy zadeklarowane w specyfikacji pakietu, a także zwraca deklaracje obiektów prywatnych, które nie są dostępne dla aplikacji.

Specyfikację pakietu tworzy się poleceniem CREATE [OR REPLACE] PACKAGE

Składnia:

CREATE [OR REPLACE] PACKAGE nazwa pakietu IS

publiczne deklaracje

specyfikacje podprogramów

END;

Ciało pakietu tworzy się poleceniem CREATE [OR REPLACE] PACKAGE BODY.

Składnia:

CREATE [OR REPLACE] PACKAGE BODY nazwa pakietu IS

prywatne deklaracje

definicje podprogramów

[BEGIN

instrukcje inicjalizujące pakietu]

END;

Pakiet usuwa się poleceniem:

DROP PACKAGE nazwa_pakietu

Przykład:

CREATE [OR REPLACE] PACKAGE pracownik IS

PROCEDURE dodaj_pr(

id_pracownika NUMBER,

nazwisko VARCHAR2,

etat VARCHAR2,

id_szefa NUMBER,

placa NUMBER,

id_zesp NUMBER);

PROCEDURE zwolnij_pr(

id_pracownika NUMBER);

END;

/

CREATE [OR REPLACE] PACKAGE BODY pracownik IS

PROCEDURE dodaj_pr(

id_pracownika NUMBER,

nazwisko VARCHAR2,

etat VARCHAR2,

id_szefa NUMBER,

placa NUMBER,

id_zesp NUMBER) IS

BEGIN

INSERT INTO prac VALUES(id_pracownika,

nazwisko, etat, id_szefa, sysdate, placa, 0, id_zesp);

END dodaj_pr;

PROCEDURE zwolnij_pr(

id_pracownika NUMBER) IS

BEGIN

DELETE FROM prac

WHERE id_prac=id_pracownika;

END zwolnij_pr;

END pracownik;

/

Zdefiniowany w pakiecie podprogram wywołujemy poprzedzając go nazwą pakietu np:

exec pracownik.dodaj_pr(555, 'ZETBACKI', 'ASYSTENT', 130, 1234, 30);

lub

exec pracownik.zwolnij_pr(555);

/*CREATE OR REPLACE PACKAGE pracownik IS

PROCEDURE dodaj_pr(

ID_PRAC NUMBER,

NAZWISKO VARCHAR2,

ETAT VARCHAR2,

SZEF NUMBER,

PLACA_POD NUMBER,

ID_ZESP NUMBER);

PROCEDURE zwolnij_pr(

id_prac NUMBER);

END;

/

CREATE OR REPLACE PACKAGE BODY pracownik IS

PROCEDURE dodaj_pr(

ID_PRAC NUMBER,

NAZWISKO VARCHAR2,

ETAT VARCHAR2,

SZEF NUMBER,

PLACA_POD NUMBER,

ID_ZSEP NUMBER) IS

BEGIN

INSERT INTO prac VALUES(ID_PRAC,

NAZWISKO, ETAT, SZEF, sysdate, PLACA_POD, 0, ID_ZESP);

END dodaj_pr;

PROCEDURE zwolnij_pr(

ID_PRAC NUMBER) IS

BEGIN

DELETE FROM PRAC

WHERE ID_PRAC=ID_PRAC;

END zwolnij_pr;

END pracownik;

/*/

exec pracownik.dodaj_pr(555,'ZETBACKI','ASYSTENT',130,1234,30);

LABORATORIUM z BAZ DANYCH

ORACLE

3



Wyszukiwarka

Podobne podstrony:
ĆW8 WY~1 DOC
1
1
Mat dla stud 2
Wyklad 1' stud
Metabolizm kkw tł stud
strukturalnaMinuchina stud
Tętnice szyjne sem dla stud II
X~1
ZO NST 14 ĆW1CZ 1, 2 STUD F F3
SEM18 ~1
kosztkapitału4 stud
1
6 Mielizna stud nowy
CEMENTY stud

więcej podobnych podstron