1
|
- Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory
pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL
|
2
|
- Pakiet (ang. package) grupuje powiązane logicznie typy, procedury,
funkcje, zmienne i kursory. Składa się ze specyfikacji (interfejsu) i
ciała (implementacji). W specyfikacji mieszczą się deklaracje typów,
zmiennych, stałych, kursorów, wyjątków i podprogramów. W ciele mieści
się implementacja specyfikacji.
|
3
|
- Cechy:
- modularność
- ukrycie informacji - użytkownikowi jest udostępniana tylko specyfikacja
pakietu (interfejs), natomiast implementacja procedur i funkcji jest
niewidoczna
- zwiększenie funkcjonalności - zmienne zadeklarowane
w pakietach istnieją przez całą sesję użytkownika; dzięki temu
mogą one służyć do wzajemnej komunikacji różnych procesów
- zwiększenie szybkości działania – przy pierwszym odwołaniu do pakietu
cała jego zawartość jest ładowana do pamięci
- współdzielenie przez wielu użytkowników
- możliwość zmiany implementacji pakietu bez konieczności rekompilacji
modułów zależnych
|
4
|
|
5
|
- W momencie pierwszego odwołania do dowolnego elementu z pakietu
zawartość całego pakietu zostaje załadowana do bufora. Zmienne i kursory
mogą być inicjalizowane w części inicjalizacyjnej pakietu.
|
6
|
|
7
|
- Zdefiniowaną w pakiecie procedurę lub funkcję wywołujemy poprzedzając
jej nazwę nazwą pakietu, np.
|
8
|
- Pragmy (pseudoinstrukcje) to dyrektywy zawierające wskazówki dla
kompilatora przetwarzane na etapie kompilacji.
- EXCEPTION_INIT: pozwala na przypisanie nazwanego wyjątku do błędu
Oracle
- RESTRICT_REFERENCES: potwierdza i weryfikuje czystość funkcji, wymusza
sprawdzenie czystości funkcji w stosunku do informacji podanych na
etapie kompilacji (tylko w wersjach wcześniejszych od Oracle8i).
Użycie:
- PRAGMA RESTRICT_REFERENCES (nazwa_funkcji, poziom_czystości),
- gdzie poziom czystości to:
- RNDS, RNPS – Reads No Database/Package State
- WNDS, WNPS – Writes No Database/Package State
- TRUST – brak kontroli czystości funkcji
- AUTONOMOUS_TRANSACTION: pozwala na wykonanie pod-programu (procedury
lub funkcji) w ramach oddzielnej transakcji
|
9
|
|
10
|
- USER_OBJECTS - informacja o pakietach w schemacie użytkownika
- USER_SOURCE - kod źródłowy pakietów użytkownika
|
11
|
- Dynamiczny SQL pozwala na konstruowanie i wykonywanie poleceń, których
pełna treść nie jest znana w momencie kompilacji aplikacji, lecz dopiero
w trakcie wykonywania programu.
- Dynamiczny SQL pozwala na:
- konstrukcję elastycznego kodu (np. procedury operującej na tablicy
przekazanej jako parametr, dynamicznego tworzenia warunków w klauzuli
WHERE)
- konstrukcję kodu wykonywalnego w trakcie działania programu
- wykonywanie w bloku PL/SQL instrukcji DDL (np. CREATE TABLE) oraz DCL
(GRANT, ALTER SESSION) i instrukcji sterujących sesją, zabronionych w
statycznym PL/SQL
|
12
|
- Polecenie EXECUTE IMMEDIATE przygotowuje (parsuje) i natychmiast
wykonuje polecenie SQL bądź blok PL/SQL
- polecenie to ciąg znaków zawierający polecenie SQL (bez średnika na
końcu)
- zmienna_i to zmienna, do której zostaną wczytane wyniki zapytania
- arg_wiązania_i to wyrażenie, którego wartość jest przekazywana do
polecenia
|
13
|
|
14
|
|
15
|
|