Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/



Podobne dokumenty
Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Język PL/SQL. Rozdział 3. Obsługa błędów wykonania Wyjątki predefiniowane i użytkownika, zgłaszanie i obsługa wyjątków.

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

BAZY DANYCH W APLIKACJACH SIECIOWYCH

OBSŁUGA WYJĄTKÓW. Mechanizm języka PL/SQL. Wyjątki:

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

Deklarowanie kursora

Technologie baz danych WYKŁAD 7: Wyjątki

Pakiety podprogramów Dynamiczny SQL

Oracle PL/SQL. Paweł Rajba.

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Delphi Laboratorium 3

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

Język PL/SQL Pakiety podprogramów

Październik Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

Oracle Developer Suite. Budowa aplikacji użytkownika końcowego

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

PL/SQL. Zaawansowane tematy PL/SQL

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bloki anonimowe w PL/SQL

Ada-95. Dariusz Wawrzyniak

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Tworzenie raportów XML Publisher przy użyciu Data Templates

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Administracja i programowanie pod Microsoft SQL Server 2000

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

PODSTAWY BAZ DANYCH 13. PL/SQL

Podstawowe właściwości języka PL/SQL

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Oracle PL/SQL. Paweł Rajba.

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Efekty uboczne błędów

Programowanie Obiektowe Ćwiczenie 4

Oracle11g: Programowanie w PL/SQL

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie obiektowe

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Aplikacje w środowisku Java

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Cele. Definiowanie wyzwalaczy

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Plan wykładu BAZY DANYCH II WYKŁAD 8. Wyzwalacze. Wyzwalacze

1 Podstawy c++ w pigułce.

Wykład 9. Pakiety w języku PL/SQL

Administracja i programowanie pod Microsoft SQL Server 2000

Kursory - pobieranie danych z baz danych do programów PL/SQL

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

15. Funkcje i procedury składowane PL/SQL

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

KARTA MODUŁU KSZTAŁCENIA

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Visual Basic Debugging and Error Handling

Procedury i funkcje składowane

Wstęp do programowania 2

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

1. ELEMENTY JĘZYKA PL/SQL

Plan wykładu BAZY DANYCH II WYKŁAD 6. Co to są wyjątki? Co to są wyjątki?

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Obowiązuje od wersji

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

1. Wyzwalacze BD (ang. triggers)

Ogranicz listę klasyfikacji budżetowych do powiązanych z danym kontem księgowym

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

PL/SQL. Zaawansowane tematy PL/SQL

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

PL/SQL. Lidia Małkiewicz i Cezary Skubała

LibreOffice Calc VBA

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów

Administracja i programowanie pod Microsoft SQL Server 2000

Bazy danych 2 Laboratorium 2

Wykład 4. Tablice. Pliki

Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress

MDW. (Moduł Dystrybucji Wysyłek) (Moduł Magento) v Strona 1 z 11

Wykład 8: Obsługa Wyjątków

Oracle10g: Programowanie w PL/SQL

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Wyjątki - wprowadzenie

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

Spis treści. 1. Logowanie. 2. Strona startowa. 3. Moje dane. 4. Towary. 5. Zamówienia. 6. Promocje

Transkrypt:

Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Zawartość modułu 4 Wyjątki PL/SQL Mechanizmy dotyczące błędów Typy wyjątków Obsługa wyjątków PL/SQL Obsługa błędów predefiniowanych, użytkownika i niepredefiniowanych Wyjątki w sekcji deklaracji i wyjątków Zasięg wyjątków PL/SQL Niestandardowe komunikaty błędów - 2 -

Wyjątki PL/SQL Wyjątek to błąd podczas wykonania Etapy obsługi wyjątków Deklaracja (jawna lub niejawna) Zgłoszenie wyjątku (jawne lub niejawne) Obsługa wyjątku (jawna lub niejawna) Każdy wyjątek ma Typ błędu (kompilacji lub wykonanie) Kod błędu (liczba wskazująca numer) Tekst błędu (opisuje błąd, zawiera również kod) - 3 -

Wyjątki PL/SQL Typ błędu PLS podczas kompilacji ORA podczas wykonania może się zdarzyć, błąd PLS będzie osadzone w ORA (np. przy uruchamianiu dynamicznego kodu) Kod błędu zwykle liczba ujemna Tekst błędu Max 512 bajtów - 4 -

Mechanizmy dotyczące błędów Deklaracje/instrukcje deklaracja EXCEPTION deklaruje wyjątek użytkownika instrukcja RAISE służy do zgłaszania wyjątków dyrektywa PRAGMA EXCEPTION_INIT służy do kojarzenia błędu Oracle z wyjątkiem użytkownika klauzula SAVE_EXCEPTIONS pozwala kontynuować przetwarzanie po niepowodzeniu na poziomie wiersza podczas operacji masowego wiązania - 5 -

Mechanizmy dotyczące błędów Funkcje SQLCODE zwraca kod błędu SQLERRM zwraca komunikat błędu komunikat zawsze zaczyna się kodem błędu Procedura RAISE_APPLICATION_ERROR pozwala definiować niestandardowe komunikaty błędów pozwala zatrzymywać program - 6 -

Typy wyjątków Wyjątki predefiniowane Niepredefiniowane błędy Oracle Wyjątki zdefiniowane przez użytkowników Niestandardowe komunikaty błędów - 7 -

Obsługa wyjątków PL/SQL Deklarujemy w klauzuli exception: EXCEPTION WHEN exceptiona1 [OR exceptiona2...] THEN... /* kod obsługi */ WHEN exceptionb1 [OR exceptionb2...] THEN... /* kod obsługi */... WHEN OTHERS THEN... /* kod obsługi */ - 8 -

Obsługa wyjątków PL/SQL Kilka uwag W przypadku zgłoszenia wyjątku, szukana jest klauzula w najbliższym bloku, potem w bloku wyżej, itd. aż do klazulu w bloku zewnętrznym (obejmującym) WHEN OTHERS pełni rolę sita łąpiącego nieobsłużone wyjątki Po obsłudze wyjątku program może się kontynuować lub zatrzymać Można tym sterować zagnieżdżaniem bloków - 9 -

Obsługa błędów predefiniowanych Błędy często się pojawiające zostały predefiniowane Dostały typ, numer i tekst komunikatu Wyjątków predefiniowanych nie trzeba ani deklarować ani zgłaszać można jednak je zgłaszać poprzez RAISE SQLCODE i SQLERRM dają możliwość logowania błędów jedynym błędem dodatnim kodzie (+100) to NO_DATA_FOUND - 10 -

Obsługa błędów użytkownika Związane tylko z daną aplikacją PL/SQL Nie są skojarzone z żadnym numerem błędu ani komunikatem Deklaracja nazwa EXCEPTION Zgłaszania RAISE nazwa Obsługa WHEN nazwa THEN... - 11 -

Obsługa błędów użytkownika Kilka uwag Wyjątek użytkownika jest zgłaszany tylko poprzez jawne użycie RAISE Jeśli zadeklarujemy wyjątek o nazwie takiej jak wyjątek predefiniowany, to wyjątek predefiniowany jest przykrywane przez ten użytkownika dostęp do predefiniowanego jest poprzez konstrukcję STANDARD.nazwa_wyjatku Ogólnie jednak nie zalecane tworzenie ww. wyjątków - 12 -

Obsługa błędów niepredefiniowanych Mamy dwa sposoby obsłużenia takich błędów: za pomocą klazuli WHEN OTHERS w połączeniu z funkcja SQLCODE i SQLERRM i to już znamy kojarzymy wyjątek użytkownika z odpowiednim kodem błędu i obsługujemy poprzez mechanizm obsługi błędów użytkownika Przykłady takich błędów naruszenie więzów klucza głównego lub obcego naruszenie więzów kontrolnych kolumny (check) - 13 -

Obsługa błędów niepredefiniowanych Szablon obsługi jest następujący DECLARE -- deklaracje wyjątku użytkownika wyjatek EXCEPTION; -- kojarzenie błędu z wyjątkiem użytkownika PRAGMA EXCEPTION_INIT(wyjatek, kod_bledu); BEGIN... EXCEPTION WHEN wyjatek THEN... END; - 14 -

Obsługa błędów niepredefiniowanych Kilka uwag Skojarzony wyjątek użytkownika zgłaszany jest automatycznie (o to w końcu chodziło) chociaż można go zgłosić ręcznie PRAGMA musi być zadeklarowana w bloku deklaracji wyjątku użytkownika (najlepiej zadeklarować jedno pod drugim) Można skojarzyć więcej niż jeden wyjątek użytkownika z tym samym numerem błędu Przykład wyjatki-niepredefiniowane.txt - 15 -

Wyjątki w sekcji deklaracji i wyjątków Błędy pojawiające się w sekcji deklaracji i wyjątków są obsługiwane Obsługa jest w klauzuli exception, w której znajduje się blok deklaracji lub klazulu wyjątków Przykład wyjatki-deklaracje.txt wyjatki-wyjatki.txt - 16 -

Ponowne zgłaszanie wyjątku Polega na przekazaniu obsługi wyjątku do klauzuli exception bloku zawierającego dany blok Przykład wyjatki-ponowne.txt - 17 -

Zasięg wyjątków PL/SQL Wyjątki predefiniowane są widoczne w całym kodzie Wyjątki użytkownika są widoczne w sekcji, w której są zadeklarowane i sekcjach zagnieżdżonych Przykłady wyjatki-zasieg.txt - 18 -

Niestandardowe komunikaty błędów Do tej pory mieliśmy Błędy Oracle, które miały zdefiniowany kod i opis Wyjątki użytkownika Oracle daje możliwość tworzenia nowych błędów z własnym kodem i opisem - 19 -

Niestandardowe komunikaty błędów Do definiowania używamy procedury RAISE_APPLICATION_ERROR( err_no number, err_msg varchar2, keep_errors boolean) err_no numer z przedziału [-20000, -20999] err_msg napis o długości <512 keep_errors true nowy błąd zostanie dopisany do listy już zdefiniowanych błędów false nowy błąd zastąpi listę już zgłoszonych błędów - 20 -

Niestandardowe komunikaty błędów Kilka uwag Mechanizm pozwala stworzyć zestaw komunikatów uszyty pod daną aplikację (np. błąd 'Kwota zbliża się do 2 progu podatkowego') Szczególnie przydatne przy tworzeniu procedur (będziemy to jeszcze omawiać) w bloku wywołującym procedurę, funkcje SQLCODE i SQLERRM zwrócą zarejestrowany kod i komunikat błędu - 21 -

Kilka uwag na koniec W bloku obejmującym obowiązkowo powinna być klauzule exception wraz z when others Każdy błąd warto logować w odpowiedniej tabeli Warto tworzyć zestaw niestandardowych komunikatów błędów dla konkretnej aplikacji Nie należy nadpisywać wyjątkami użytkowników wyjątków predefiniowanych Obsługę błędów należy oddzielać od kodu Korzystajmy z mechanizmu wyjątków - 22 -