Systemy baz danych

Transkrypt

Systemy baz danych
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
Systemy baz danych - wykład III
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
dr inż. Robert Perliński
Interakcje
SQL w PL/SQL
Kursory
Instytut Informatyki Teoretycznej i Stosowanej
Politechnika Częstochowska
Wyjątki
Podsumowanie
Październik 2015
Źródła
Systemy baz danych - wykład III
1/40
Plan wykładu
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Uzupełnienie projektu fizycznego
Czym jest PL/SQL
Bloki w PL/SQL
Zmienne i stałe
Instrukcje sterujące
Interakcje
Instrukcje sterujące
SQL w PL/SQL
Kursory
Wykorzystanie SQL w PL/SQL
Wyjątki
Kursory
Podsumowanie
Źródła
Wyjątki
Systemy baz danych - wykład III
2/40
Projekt fizyczny bazy danych
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Braki projektu fizycznego opartego wyłącznie na możliwościach
SQL’a:
niemożność modyfikacji danych za pośrednictwem
perspektyw złożonych,
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
brak obsługi sytuacji wyjątkowych,
brak obsługi zdarzeń,
Kursory
Wyjątki
brak funkcji i procedur użytkownika,
Podsumowanie
brak złożonych zależności i ograniczeń integralności.
Źródła
Systemy baz danych - wykład III
3/40
PL/SQL
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
PL/SQL
(ang. Procedural Language/Structured Query Language) język programowania będący proceduralnym rozszerzeniem
SQL wprowadzonym przez firmę Oracle (oparty na języku
Ada). Umożliwia wykorzystywanie konstrukcji takich jak pętle,
instrukcje warunkowe, zmienne oraz tworzenie procedur,
funkcji, wyzwalaczy użytkownika wspomagających konkretną
realizację bazy danych.
Wyjątki
Podsumowanie
Źródła
Rozwiązanie specyficzne dla SZBD Oracle, jednakże każdy
dystrybutor udostępnia swoje rozwiązania (np. PL/pgSQL w
PostgreSQL), które są zbliżone do PL/SQL’a.
Systemy baz danych - wykład III
4/40
Cechy PL/SQL
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Cechy PL/SQL:
język proceduralny nastawiony na przetwarzanie danych,
język kompilowany,
język obsługujący zmienne, stałe, struktury sterujące,
wyjątki,
ma strukturę blokową,
każda instrukcja wewnątrz bloku PL/SQL jest zakończona
średnikiem,
operator przypisania to := ,
Podsumowanie
Źródła
może zawierać instrukcje DML i TCL,
nie może zawierać instrukcji DDL i DCL (nadawanie
uprawnień).
Systemy baz danych - wykład III
5/40
Bloki PL/SQL
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Podstawową jednostką, z której składa się program w PL/SQL
jest blok, wyróżniamy:
Wprowadzenie
bloki anonimowe,
PL/SQL podstawy
bloki nazwane,
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
bloki podrzędne.
Każdy blok składa się z maksymalnie trzech części:
deklaracyjnej (opcjonalnie),
Wyjątki
Podsumowanie
wykonywalnej,
Źródła
obsługi wyjatków (opcjonalnie).
Systemy baz danych - wykład III
6/40
Struktura bloku PL/SQL
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
[DECLARE
deklaracje;]
BEGIN
bloki_podrzedne;
instrukcje;
[EXCEPTION
obsluga_wyjatkow;]
END;
Systemy baz danych - wykład III
7/40
Komentarze
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
W PL/SQL stosuje się dwa rodzaje komentarzy:
jednowierszowe - rozpoczynające się od znaków --
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
wielowierszowe - rozpoczynające się od znaków /*, a
kończące */.
Kursory
Wyjątki
Podsumowanie
Źródła
Systemy baz danych - wykład III
8/40
Typy danych
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
PL/SQL obsługuje wszystkie typy danych SQL, oraz posiada
wiele swoich, dodatkowych typów, które możemy podzielić
następująco:
typy proste (BINARY INTEGER, NATURAL, BOOLEAN,
POSITIVE, itd.),
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
typy złożone (RECORD, TABLE, VARRAY),
typy referencyjne (REF CURSOR, REF typ obiektowy),
typy definiowane przez użytkownika.
Źródła
Systemy baz danych - wykład III
9/40
Zmienne
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Deklaracja zmiennych:
DECLARE
nazwa_zmiennej typ[(rozmiar)]
[NOT NULL] [{:= | DEFAULT} wartosc];
Np.:
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
DECLARE
v_wiek NUMBER(3);
v_plec VARCHAR2(9);
v_licznik NUMBER(4) NOT NULL := 0;
v_suma NUMBER(10) DEFAULT 0;
Systemy baz danych - wykład III
10/40
Zmienne rekordowe
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Deklaracja zmiennych rekordowych:
DECLARE
TYPE nazwa_typu_rekordowego IS RECORD (
pole1 typ [inicjalizacja]
[, pole2 typ [inicjalizacja] ...]
);
nazwa_zmiennej typ_rekordowy;
Zmienne i stałe
Instrukcje sterujące
Interakcje
Np.:
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
DECLARE
TYPE r_adres IS RECORD (
v_ulica VARCHAR2(30),
v_nr_domu VARCHAR2(4),
v_nr_mieszkania VARCHAR2(4)
);
vr_adres r_adres;
Systemy baz danych - wykład III
11/40
Stałe
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Deklaracja stałych:
DECLARE
nazwa_stalej CONSTANT typ[(rozmiar)]
{:= | DEFAULT} wartosc;
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Np.:
Kursory
Wyjątki
Podsumowanie
DECLARE
c_procent CONSTANT NUMBER(2) := 10;
Źródła
Systemy baz danych - wykład III
12/40
%TYPE, %ROWTYPE
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Istnieje możliwość deklarowania zmiennych o typach kolumn,
lub wierszy istniejących w bazie:
DECLARE
nazwa_zmiennej tabela.kolumna%TYPE;
nazwa_z_rekordowej tabela%ROWTYPE;
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Np.:
Kursory
Wyjątki
Podsumowanie
Źródła
DECLARE
v_nazwisko studenci.nazwisko%TYPE;
vr_student studenci%ROWTYPE;
Systemy baz danych - wykład III
13/40
IF
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
IF warunek THEN
instrukcja;
END IF;
IF warunek THEN
instrukcja1;
ELSE
instrukcja2;
END IF;
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
Systemy baz danych - wykład III
IF warunek1 THEN
instrukcja1;
ELSIF warunek2 THEN
instrukcja2;
...
ELSE
instrukcja_n;
END IF;
14/40
CASE
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
CASE wyrazenie
WHEN wyrazenie1 THEN instrukcja1;
WHEN wyrazenie2 THEN instrukcja2;
...
[ELSE instrukcja_n];
END CASE;
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
Systemy baz danych - wykład III
CASE
WHEN warunek1 THEN instrukcja1;
WHEN warunek2 THEN instrukcja2;
...
[ELSE instrukcja_n];
END CASE;
15/40
Pętle
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
LOOP
instrukcje;
[IF warunek THEN EXIT; END IF;]
[EXIT WHEN warunek;]
END LOOP;
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
Systemy baz danych - wykład III
WHILE warunek LOOP
instrukcje;
END LOOP;
FOR licznik IN [REVERSE] min..max LOOP
instrukcje;
END LOOP;
16/40
Instrukcja NULL
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
BEGIN
IF warunek THEN
instrukcje;
ELSE
NULL;
END IF;
END;
Podsumowanie
Źródła
Systemy baz danych - wykład III
17/40
Interakcje
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
pobieranie danych (zmienne podstawienia):
v_nazwisko := &nazwisko;
wyprowadzenie danych (włączona zmienna środowiskowa
SERVEROUTPUT ON):
dbms_output.put_line(tekst);
dbms_output.new_line;
dbms_output.put_line(
’Hello’||CHR(10)||’ World’);
Wyjątki
Podsumowanie
Źródła
wyczyszczenie ekranu (nie działa w PL/SQL):
CLEAR SCREEN;
CL SCR;
-- skrócona forma
Systemy baz danych - wykład III
18/40
SQL w PL/SQL I
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Wewnątrz bloków PL/SQL można zagnieździć niektóre
polecenia SQL:
DML: INSERT, UPDATE, DELETE, specyficzną formę
SELECT,
TCL: COMMIT, ROLLBACK, SAVEPOINT, SET
TRANSACTION, LOCK.
Instrukcje sterujące
Interakcje
Postać klauzuli SELECT:
SQL w PL/SQL
Kursory
Wyjątki
SELECT lista_wyrazen INTO lista_zmiennych
FROM lista_relacji...;
Podsumowanie
Źródła
SELECT lista_wyrazen INTO zmienna_rekordowa
FROM lista_relacji...;
Systemy baz danych - wykład III
19/40
SQL w PL/SQL II
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Postać INSERT, UPDATE i DELETE pozostaje niezmieniona,
dochodzi opcjonalna klauzula
RETURNING wyrazenie INTO zmienna:
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
INSERT INTO dzialy (id_dzialu, siedziba)
VALUES (90, ’HONOLULU’)
RETURNING id_dzialu INTO v_id;
SQL w PL/SQL
Kursory
Istnieje możliwość wykorzystania zmiennych rekordowych:
Wyjątki
Podsumowanie
Źródła
INSERT INTO tabela VALUES zmienna_rekordowa;
UPDATE tabela SET row = zmienna_rekordowa;
Systemy baz danych - wykład III
20/40
Kursor I
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Kursor
- przestrzeń robocza posiadająca nazwę, pozwalająca składować
i udostępniać wynik zapytania SQL. Wyróżniamy kursory jawne
(deklarowane przez programistę) i niejawne o nazwie SQL
(tworzone przez system dla każdej instrukcji DML i DDL).
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Obsługa kursora jawnego:
Kursory
deklaracja,
Wyjątki
otwarcie,
Podsumowanie
Źródła
pobranie danych,
zamknięcie.
Systemy baz danych - wykład III
21/40
Deklaracja kursora I
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Deklaracja kursora:
CURSOR nazwa [(parametr1 typ [:=|DEFAULT wartosc1]
[, parametr2...]...)]
[RETURN typ] IS SELECT...;
Przykłady:
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
CURSOR c_szefowie IS
SELECT DISTINCT kierownik FROM pracownicy;
CURSOR c_dzial (p_id NUMBER) IS
SELECT * FROM pracownicy WHERE id_dzialu=p_id;
Podsumowanie
Źródła
CURSOR c_dzial (p_id NUMBER := 10) IS
SELECT * FROM pracownicy WHERE id_dzialu=p_id;
CURSOR c_pracownicy RETURN pracownicy%ROWTYPE;
Systemy baz danych - wykład III
22/40
Otwarcie kursora
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
OPEN nazwa (lista_parametrow);
Np.:
DECLARE
CURSOR c_dzial (p_id NUMBER := 10) IS
SELECT * FROM pracownicy WHERE id_dzialu=p_id;
...
BEGIN
OPEN c_dzial(20);
...
END;
Systemy baz danych - wykład III
23/40
Pobranie danych
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
FETCH nazwa INTO {lista_zmiennych|zmienna_rekordowa};
Np.:
DECLARE
CURSOR c_dzial (p_id NUMBER := 10) IS
SELECT * FROM pracownicy WHERE id_dzialu=p_id;
vr_pracownik pracownicy%ROWTYPE;
...
BEGIN
OPEN c_dzial(20);
FETCH c_dzial INTO v_pracownik;
...
END;
Systemy baz danych - wykład III
24/40
Zamknięcie kursora
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
CLOSE nazwa;
Np.:
DECLARE
CURSOR c_dzial (p_id NUMBER := 10) IS
SELECT * FROM pracownicy WHERE id_dzialu=p_id;
vr_pracownik pracownicy%ROWTYPE;
...
BEGIN
OPEN c_dzial(20);
FETCH c_dzial INTO v_pracownik;
CLOSE c_dzial;
...
END;
Systemy baz danych - wykład III
25/40
Atrybuty kursora
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Każdy kursor posiada atrybuty:
%ISOPEN - zwraca prawdę jeżeli kursor jest otwarty (dla
niejawnego zawsze FALSE),
%FOUND - zwraca prawdę jeżeli ostatnie pobranie (FETCH)
lub modyfikacja danych powiodła się,
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
%NOTFOUND - zwraca prawdę jeżeli ostatnie pobranie lub
modyfikacja danych nie powiodła się,
%ROWCOUNT - zwraca liczbę wierszy pobranych lub
zmodyfikowanych od momentu otwarcia kursora.
Systemy baz danych - wykład III
26/40
Pętle obsługujące kursor I
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
DECLARE
CURSOR c_dzial (p_id NUMBER := 10) IS
SELECT * FROM pracownicy WHERE id_dzialu=p_id;
vr_pracownik pracownicy%ROWTYPE;
BEGIN
OPEN c_dzial(20);
LOOP
FETCH c_dzial INTO vr_pracownik;
IF c_dzial%NOTFOUND THEN
EXIT;
END IF;
dbms_output.put_line(vr_pracownik.nazwisko);
END LOOP;
dbms_output.put_line(’Wybrano ’||
c_dzial%ROWCOUNT||’ wierszy.’);
CLOSE c_dzial;
END;
Systemy baz danych - wykład III
27/40
Pętle obsługujące kursor II
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
DECLARE
CURSOR c_dzial (p_id NUMBER := 10) IS
SELECT * FROM pracownicy WHERE id_dzialu=p_id;
BEGIN
FOR vr_pracownik IN c_dzial(20) LOOP
dbms_output.put_line(vr_pracownik.nazwisko);
END LOOP;
END;
Źródła
Systemy baz danych - wykład III
28/40
Pętle obsługujące kursor III
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
DECLARE
v_id pracownicy.id_dzialu%TYPE := &id;
BEGIN
FOR vr_pracownik IN (SELECT * FROM pracownicy
WHERE id_dzialu = v_id ) LOOP
dbms_output.put_line(vr_pracownik.nazwisko);
END LOOP;
END;
Źródła
Systemy baz danych - wykład III
29/40
Wyjątek
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Wyjątek
- zdarzenie (błąd lub ostrzeżenie), które może wystąpić w
czasie wykonywania bloku PL/SQL. Zdarzenie to powoduje
przerwanie normalnego toku działania programu i przeniesienie
do sekcji EXCEPTION, w celu wykonania instrukcji
przewidzianych do obsługi danej sytuacji. Wyróżniamy wyjątki
predefiniowane oraz użytkownika.
Podsumowanie
Źródła
Systemy baz danych - wykład III
30/40
Wyjątki predefiniowane I
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Niektóre wyjątki zgłaszane automatycznie przez system:
CASE_NOT_FOUND - żadna z podanych klazul WHEN nie
spełnia warunku, a nie przewidziano sekcji domyślnej ELSE.
CURSOR_ALREADY_OPEN - próba otwarcia otwartego
kursora.
DUP_VAL_ON_INDEX - próba naruszenia ograniczenia
unikalnej wartości.
INVALID_CURSOR - nielegalna operacja na kursorze.
Wyjątki
INVALID_NUMBER - błąd wartości.
Podsumowanie
LOGIN_DENIED - nieudana próba połączenia do bazy.
Źródła
NO_DATA_FOUND - instrukcja SELECT nie zwróciła żadnego
wiersza.
NOT_LOGGED_ON - nie połączono się z bazą.
Systemy baz danych - wykład III
31/40
Wyjątki predefiniowane II
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
TIMEOUT_ON_RESOURCE - przekroczenie czasu oczekiwania
na zwolnienie zasobu.
TOO_MANY_ROWS - instrukcja SELECT zwróciła więcej niż
jeden wiersz.
VALUE_ERROR - błąd wartości.
ZERO_DIVIDE - próba dzielenia przez zero.
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
Identyfikacja błędu:
SQLERRM - opis wyjątku,
SQLCODE - numer wyjątku.
Systemy baz danych - wykład III
32/40
Korzystanie z wyjątków użytkownika I
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
deklaracja
nazwa_wyjatku EXCEPTION;
podniesienie wyjątku
RAISE nazwa_wyjatku;
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
przechwycenie w sekcji obsługi wyjątków.
EXCEPTION
WHEN wyjatek1 THEN
instrukcje1;
WHEN wyjatek2 THEN
instrukcje2;
...
WHEN OTHERS THEN
instrukcje_n;
Systemy baz danych - wykład III
33/40
Korzystanie z wyjątków użytkownika II
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
DECLARE
e_zla_wartosc EXCEPTION;
...
BEGIN
...
IF v_id = 0 THEN
RAISE e_zla_wartosc;
END IF;
...
EXCEPTION
WHEN e_zla_wartosc THEN
dbms_output.put_line(’Bledna wartosc
identyfikatora.’);
END;
Systemy baz danych - wykład III
34/40
Propagacja wyjątków I
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
BEGIN
...
BEGIN
...
IF v_id = 0 THEN
RAISE e_zla_wartosc;
END IF;
...
EXCEPTION
WHEN e_zla_wartosc THEN
dbms_output.put_line(’Bledna wartosc
identyfikatora.’);
END;
...
EXCEPTION
...
END;
Systemy baz danych - wykład III
35/40
Propagacja wyjątków II
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
BEGIN
...
BEGIN
...
IF v_id = 0 THEN
RAISE e_zla_wartosc;
END IF;
...
EXCEPTION
WHEN TOO_MANY_ROWS THEN
dbms_output.put_line(’Za duzo wartosci.’);
END;
...
EXCEPTION
WHEN e_zla_wartosc THEN
dbms_output.put_line(’Bledna wartosc ident...’);
END;
Systemy baz danych - wykład III
36/40
Propagacja wyjątków III
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
BEGIN
...
BEGIN
...
IF v_id = 0 THEN
RAISE e_zla_wartosc;
END IF;
...
EXCEPTION
WHEN TOO_MANY_ROWS THEN
dbms_output.put_line(’Za duzo wartosci.’);
END;
...
EXCEPTION
WHEN VALUE_ERROR THEN
dbms_output.put_line(’Blad konwersji.’);
END;
Systemy baz danych - wykład III
37/40
Raise application error
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
Zmienne i stałe
Instrukcje sterujące
Interakcje
Wywołania procedury Raise_application_error pozwala
przerwać działanie programu i wyprowadzić na ekran informacje
o błędzie.
Składnia:
Raise_application_error(numer_bledu, opis);
Numer błedu zawiera się w przedziale od -20000 do -20999, a
opis może zajmować 2048 bajtów. Np.:
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
IF v_id = 0 THEN
Raise_application_error(-20002,
’Błędny identyfikator’);
ELSE
...
END IF;
Systemy baz danych - wykład III
38/40
Podsumowanie
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
PL/SQL umożliwia:
korzystanie ze zmiennych, stałych,
instrukcji sterujących,
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
przetwarzanie sekwencyjne zorientowane na dane,
obsługę sytuacji wyjątkowych,
i wiele innych, o czym na następnym wykładzie...
Podsumowanie
Źródła
Systemy baz danych - wykład III
39/40
Źródła
Systemy baz
danych wykład III
dr inż.
Robert
Perliński
Wprowadzenie
PL/SQL podstawy
W wykładzie wykorzystano materiały:
http://www.oracle.com/technology/tech/pl_sql/
index.html
M. Lentner, Oracle 9i Kompletny podręcznik użytkownika,
PJWSTK - W-wa, 2003
Zmienne i stałe
Instrukcje sterujące
Interakcje
SQL w PL/SQL
Kursory
Wyjątki
Podsumowanie
Źródła
http://wazniak.mimuw.edu.pl/index.php?title=
Bazy_danych
http://www.ploug.org.pl/showhtml.php?file=
szkola/szkola_9/materialy
Garcia-Molina, Ullman, Widom: Implementacja systemów
baz danych, WNT 2003
Systemy baz danych - wykład III
40/40

Podobne dokumenty