1
|
- Zmienne podstawienia i zmienne wiązane, podprogramy, procedury
składowane, typy argumentów, wywoływanie procedur, funkcje składowane,
poziomy czystości funkcji, funkcje tablicowe
|
2
|
- Zmienne definiowane przez użytkownika mogą być użyte w miejsce nazw
relacji, atrybutów lub jako wartości atrybutów. Zmienna podstawienia nie
może być pierwszym słowem polecenia. Zmienne podstawienia są zawsze typu
CHAR.
- Polecenie DEFINE bez parametrów wyświetla listę wszystkich zmiennych
podstawienia.
|
3
|
- Zmienne wiązane to zmienne deklarowane w SQL*Plus lub innym środowisku
zewnętrznym, które są dostępne w programach PL/SQL. Mogą służyć do
przekazywania wartości z PL/SQL do SQL i do optymalizacji zapytań. W
PL/SQL zachowują się jak zwykłe zmienne.
|
4
|
- Zmienne wiązane kursorowe pozwalają na odczytanie w SQL*Plus wyniku
zapytania umieszczonego w bloku PL/SQL. Mogą być stosowane zarówno w
anonimowych blokach PL/SQL, jak i jako parametr lub typ wynikowy
procedury lub funkcji.
|
5
|
- Procedury (wykonują określone akcje), funkcje (wykonują obliczenia i
zwracają wartości) i pakiety (zbierają w całość logicznie powiązane
procedury, funkcje, zmienne i kursory):
- przechowywane w bazie danych w postaci skompilowanej i źródłowej
(źródło dostępne poprzez USER_SOURCE)
- postać skompilowana zwiększenie szybkości działania
- współdzielone przez wielu użytkowników
- Zalety:
- rozszerzalność
- modularność
- łatwość pielęgnowania kodu
- możliwość wielokrotnego użycia kodu
- ukrycie szczegółów implementacji
|
6
|
- nazwa procedury musi być unikalna w ramach schematu (lub pakietu)
- między słowami kluczowymi IS i BEGIN umieszczamy deklaracje wszystkich
zmiennych i kursorów lokalnych
- między słowami kluczowymi BEGIN i END umieszczamy kod PL/SQL, który
wykonuje dana procedura
|
7
|
- w liście argumentów nie podajemy rozmiaru argumentu (tylko typ)
- argument formalny: używany w deklaracji procedury i w części
wykonywalnej PL/SQL
- argument aktualny: używany przy wywoływaniu procedury
|
8
|
|
9
|
- nazwa funkcji musi być unikalna w ramach schematu (lub pakietu)
- po słowie kluczowym RETURN umieszczamy typ zwracany przez funkcję
- między słowami kluczowymi IS i BEGIN umieszczamy deklaracje wszystkich
zmiennych i kursorów lokalnych
- między słowami kluczowymi BEGIN i END umieszczamy kod PL/SQL, który
wykonuje dana funkcja
- w kodzie PL/SQL musi się znaleźć instrukcja RETURN
|
10
|
|
11
|
- UWAGA: wołanie funkcji z poziomu SQL jest możliwe tylko wtedy gdy
funkcja posiada odpowiedni poziom „czystości”
|
12
|
- Aby funkcja mogła być wywoływana z poziomu SQL, musi ona posiadać
odpowiedni poziom czystości
- funkcja wywoływana z instrukcji SELECT nie może modyfikować żadnych
wartości w bazie danych
- funkcja wywoływana z instrukcji INSERT, UPDATE, DELETE nie może
odczytywać i modyfikować żadnej tabeli, której dotyczy instrukcja
- funkcja wywoływana z instrukcji SELECT, INSERT, UPDATE, DELETE nie może
zawierać instrukcji sterujących sesją i transakcjami oraz instrukcji
DDL
|
13
|
|
14
|
- USER_OBJECTS - informacja o obiektach w schemacie użytkownika
- USER_SOURCE - kod źródłowy procedur i funkcji użytkownika
|
15
|
- Funkcje tablicowe dają w wyniku kolekcję krotek. Nazwy tych
funkcji mogą być wykorzystywane
zamiast nazw tabel. Funkcje tablicowe mogą również przyjmować kolekcję
krotek jako parametr. Funkcje mogą być zrównoleglone oraz potokowane, co
zwiększa efektywność przetwarzania poprzez:
- wielowątkowe wykonanie funkcji
- eliminację przechowywania wyników pośrednich
- zmniejszenie czasu odpowiedzi na pierwsze wyniki
- iteracyjne dostarczanie kolejnych krotek wyniku
- W przypadku funkcji potokowanych do dostarczenia krotki do wyniku służy
komenda PIPE ROW (...)
|
16
|
|