kbd_3(1).pdf

(137 KB) Pobierz
kbd_3.dvi
KBD2—Komercyjnebazydanych
drin». TomaszTraczyk
3. J¦zykPL/SQL
Listopad2007
Copyright c · TomaszTraczyk
Instytut Automatyki iInformatykiStosowanej PolitechnikiWarszawskiej
Materiałydydaktyczne przeznaczone s¡wył¡czniedoindywidualnegou»ytkustudiuj¡cych.
Rozpowszechnianie kopiibezpisemnejzgodyautorajestzabronione.
Streszczenie
Wykład przedstawia j¦zyk PL/SQL stosowany w Oracle do programowania pro-
ceduralnego po stronie serwera i po stronie klienta — w aplikacjach tworzonych za
pomoc¡narz¦dziForms/Reports.
'
$
J¦zyk PL/SQL
• Proceduralny j¦zyk programowania
• Nie¹le zintegrowany z SQL
• Zastosowanie
– Programowanie proceduralne po stronie DBMS: wyzwalacze, składowane w bazie danych
procedury, funkcje i pakiety
– Pomocnicze programowanie w narz¦dziach Forms i Reports
• Cechy
– całkowita przeno±no±¢
– brak transmisji sieciowych
– interpretowany - spore zu»ycie zasobów serwera
– istnieje mo»liwo±¢ kompilacji do kodu maszynowego
&
%
1
268102658.027.png 268102658.028.png 268102658.029.png
'
$
Podstawowe konstrukcje
• J¦zyk strukturalny
• Budowa blokowa
• Format
• Instrukcja podstawienia
– posta¢: zmienna:= wyra»enie;
– niezb¦dne konwersje typów — automatyczne
• Bloki
– bloki nazwane, czyli moduły
wyzwalacze
procedury
funkcje
pakiety
– bloki anonimowe
– bloki podrz¦dne
&
%
2
268102658.030.png 268102658.001.png
'
$
<< etykieta _ bloku >>
DECLARE
deklaracje ;
BEGIN
ciało ;
EXCEPTION
obsługa wyj¡tków ;
END;
• Etykieta, cz¦±ci DECLARE i EXCEPTION — opcjonalne
• W głównym bloku słowo DECLARE pomija si¦
• Zagnie»d»anie bloków
Budowa bloku
&
%
'
$
Dane
• Stałe i zmienne musz¡ by¢ deklarowane
• Deklaracje stałych: nazwa stałejCONSTANT typ :=wyra»enie;
• Deklaracje zmiennych: nazwa zmiennej typ [ NOT NULL [ :=wyra»enie ]] ;
– zamiast := mo»na u»y¢ DEFAULT
– zmienna niezainicjowana ma warto±¢ NULL
– deklarowanie zmiennej o typie zgodnym z kolumn¡: nazwa zmiennej
nazwa tabeli.nazwa kolumny%TYPE
– deklarowanie zmiennej o typie identycznym wcze±niej zadeklarowan¡ zmienn¡:
nazwa nowej zmiennej nazwa starej zmiennej%TYPE
&
%
3
268102658.002.png 268102658.003.png 268102658.004.png 268102658.005.png 268102658.006.png 268102658.007.png 268102658.008.png 268102658.009.png 268102658.010.png 268102658.011.png
'
$
Proste typy danych
• Wszystkie typy dopuszczalne dla kolumn
• BINARY INTEGER – „szybki” typ numeryczny 32 bitowy
– NATURAL – liczby nieujemne
– POSITIVE – liczby dodatnie
• BOOLEAN – typ logiczny (stałe TRUE i FALSE )
&
%
'
$
Zło»one typy danych
Tablice
• Tablice index-by
– deklaracja typu: TYPEnowy typIS TABLE OF typ prostyINDEX BY BINARY INTEGER;
– deklaracja zmiennej — przy u»yciu nazwy zdefiniowanegotypu
– odwołanie do komórki zmienna tablicowa(indeks)
• Inne typy tablicowe: nestedtables i varrays ! pó¹niej
&
%
4
268102658.012.png 268102658.013.png 268102658.014.png 268102658.015.png 268102658.016.png 268102658.017.png 268102658.018.png 268102658.019.png 268102658.020.png
'
$
Rekordy
• Deklaracja: TYPE nowy typ IS RECORD (lista deklaracji pól);
• Deklaracje pól — jak deklaracje zmiennych
• Dozwolone zagnie»d»anie pól wcze±niej zdefiniowanych typów rekordowych
• Deklaracja zmiennej — przy u»yciu nazwy zdefiniowanegotypu
• Deklaracja rekordu o strukturze wiersza tabeli: nazwa zmiennej nazwa tabeli%ROWTYPE;
• Odwołania do pól: nazwa zmiennej rekordowej.nazwa pola
DECLARE
TYPE rekord IS RECORD (
deklaracja typu
ocena NUMBER(3,1),
wykladowca wykladowcy%ROWTYPE
zagnie»d»ona struktura rekordowa
);
zapis rekord;
deklaracja zmiennej typu rekordowego
BEGIN
zapis.wykladowca.id_wykladowcy := 1;
odwołanie do pola zagnie»d»onego rekordu
...
END;
&
%
'
$
Instrukcje steruj¡ce
• Instrukcja pusta: NULL;
• Instrukcja warunkowa:
IF warunek THEN
instrukcje
ELSIF
instrukcje
ELSE
instrukcje
END IF;
• P¦tle
– z ka»dej p¦tli mo»liwy wyskok instrukcj¡
EXIT [ etykieta ] [ WHENwarunek ] ;
– etykiety umo»liwia wyskok przez kilka
poziomów, do p¦tli poprzedzonej:
<<etykieta>>
• P¦tla bezwarunkowa:
LOOP
instrukcje
END LOOP;
• P¦tla warunkowa:
WHILE warunek LOOP
instrukcje
END LOOP;
• P¦tla wyliczana:
FOR licznik IN pocz¡tek .. koniec LOOP
instrukcje
END LOOP;
&
%
5
268102658.021.png 268102658.022.png 268102658.023.png 268102658.024.png 268102658.025.png 268102658.026.png
Zgłoś jeśli naruszono regulamin