Technologie baz danych WYKŁAD 7: Wyjątki

Podobne dokumenty
Zaawansowane bazy danych i hurtownie danych semestr I

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.

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

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

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

BAZY DANYCH W APLIKACJACH SIECIOWYCH

Deklarowanie kursora

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

Zaawansowane bazy danych i hurtownie danych semestr I, st. niestacjonarne

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

Oracle PL/SQL. Paweł Rajba.

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

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

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

Język SQL. Rozdział 8. Język manipulowania danymi DML

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

Baza danych inside. Biologiczne Aplikacje Baz Danych

Oracle PL/SQL. Paweł Rajba.

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

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

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Bazy danych. Plan wykładu. Złczenia tabel. Perspektywy cd. Wykład 9: Programowanie aplikacji baz danych po stronie serwera. Sekwencje Wyzwalacze

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Pakiety podprogramów Dynamiczny SQL

PODSTAWY BAZ DANYCH 13. PL/SQL

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

PL/SQL. Zaawansowane tematy PL/SQL

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

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

1. Wyzwalacze BD (ang. triggers)

15. Funkcje i procedury składowane PL/SQL

Paweł Rajba

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

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

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Wykład 8. SQL praca z tabelami 5

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

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

Bloki anonimowe w PL/SQL

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

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

Multimedialne bazy danych - laboratorium

Język PL/SQL Procedury i funkcje składowane

Indeksy. Indeks typu B drzewo

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

SQL 4 Structured Query Lenguage

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

Procedury i funkcje składowane

Instrukcja instalacji aplikacji PlanSoft.org

Aby stworzyć widok, należy mieć uprawnienia do wszystkich obiektów do których odnosi się widok.

Składowane procedury i funkcje

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Widok Connections po utworzeniu połączenia. Obszar roboczy

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Oracle PL/SQL. Paweł Rajba.

Zaawansowane bazy danych i hurtownie danych semestr I

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

1. ELEMENTY JĘZYKA PL/SQL

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

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

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

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Podprogramy. Rozdział 11 Procedury i funkcje składowane

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

Wyzwalacze TWORZENIE WYZWALACZY

Język PL/SQL Pakiety podprogramów

Systemy GIS Tworzenie zapytań w bazach danych

Relacyjne bazy danych. Podstawy SQL

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

1 Wprowadzenie do bloków nazwanych 1. 2 Parametry 2. 3 Procedury i funkcje 3. 4 Pakiety 6. 5 Podsumowanie Źródła 10

Instrukcja instalacji aplikacji Plansoft.org

Uprawnienia, role, synonimy

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Oracle11g: Wprowadzenie do SQL

Grupowanie i funkcje agregujące

Technologie baz danych

Hurtownia Świętego Mikołaja projekt bazy danych

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Wykład 5. SQL praca z tabelami 2

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

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

Bazy danych 10. SQL Widoki

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

BAZA DANYCH SIECI HOTELI

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Ćwiczenia 2 IBM DB2 Data Studio

Relacyjne bazy danych. Podstawy SQL

Oracle PL/SQL. Paweł Rajba.

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

Oracle PL/SQL. Paweł Rajba.

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

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

Aspekty aktywne baz danych

Transkrypt:

Wydział Informatyki Politechnika Białostocka Obsługa wyjątków Technologie baz danych WYKŁAD 7: Wyjątki [] [] Agnieszka Oniśko, Małgorzata Krętowska TBD-wyjątki 1 TBD-wyjątki 2 Sposoby powstania sytuacji wyjątkowej Obsługa wyjątków Wystąpienie błędu systemu ORACLE wyjątki predefiniowane wyjątki nie-predefiniowane Jawne wywołanie sytuacji wyjątkowej przez użytkownika przez instrukcję RAISE nazwa_wyjątku ; RAISE nazwa_wyjątku; WHEN wyjątek-1 THEN instrukcja-1; WHEN wyjątek-2 THEN instrukcja-2; WHEN OTHERS THEN instrukcja-3; TBD-wyjątki 3 TBD-wyjątki 4 Klauzula WHEN OTHERS Klauzula WHEN OTHERS powinna być umieszczana po wszystkich innych klauzulach obsługi wyjątków Klauzula WHEN OTHERS może wystąpić tylko jeden raz Wyjątki predefiniowane - przykład v_cena ksiazka.cena%type; v_isbn ksiazka.isbn%type; SELECT cena, isbn INTO v_cena, v_isbn FROM t_ksiazka WHERE cena>100; TBD-wyjątki 5 WHEN NO_DATA_FOUND THEN :str1 := no data ; -- obsłuż wyjątek WHEN TOO_MANY_ROWS THEN :str1 := too many ; -- obsłuż wyjątek TBD-wyjątki 6

Wyjątki predefiniowane Wyjątki predefiniowane: Przykład NO_DATA_FOUND TOO_MANY_ROWS ZERO_DIVIDE LOGIN_DENIED NOT_LOGGED_ON ACCESS_INTO_NULL COLLECTION_IS_NULL CURSOR_ALREADY_OPEN DUP_VAL_ON_INDEX INVALID_CURSOR INVALID_NUMBER TBD-wyjątki 7 pe_ratio NUMBER(3,1); SELECT price / earnings INTO pe_ratio FROM stocks WHERE symbol = 'XYZ'; INSERT INTO stats (symbol, ratio) VALUES ('XYZ', pe_ratio); COMMIT; WHEN ZERO_DIVIDE THEN INSERT INTO stats (symbol, ratio) VALUES ('XYZ', NULL); COMMIT; WHEN OTHERS THEN ROLLBACK; TBD-wyjątki 8 Wyjątki predefiniowane Wyłapywanie nie-predefiniowanych wyjątków serwera ORACLE PL/SQL User s Guide and Reference Rozdział: Error handling Deklaracja Powiązanie Odwołanie Sekcja deklaracyjna Sekcja obsługi wyjątków PRAGMA _INIT(wyjątek, numer_bledu); Łączymy nazwę wyjątku z już istniejącym numerem błędu TBD-wyjątki 9 TBD-wyjątki 10 Wyjątki nie-predefiniowane Funkcje do wyłapywania wyjątków cena_null ; PRAGMA _INIT(cena_null, -20101); WHEN cena_null THEN INSERT INTO KOMUNIKAT VALUES ( Cena ma wartość nieokreśloną ); SQLCODE (zwraca wartość liczbową błędu) SQLERRM (zwraca łańcuch zawierajacy komunikat powiązany z numerem błędu) TBD-wyjątki 11 TBD-wyjątki 12

Funkcje do wyłapywania wyjątków Wyłapywanie wyjątków definiowanych przez użytkownika v_kod_bledu NUMBER v_opis_bledu VARCHAR2(255); WHEN OTHERS THEN v_kod_bledu := SQLCODE; v_opis_bledu := SQLERRM; v_output := TO_CHAR(v_kod_błędu) : v_opis_błędu; Deklaracja Sekcja deklaracyjna Wywołanie Sekcja wykonywalna Odwołanie Sekcja obsługi wyjątków TBD-wyjątki 13 TBD-wyjątki 14 Wyjątki przykład PROCEDURE mod_cene (p_isbn t_ksiazka.isbn%type, p_wartosc NUMBER) IS v_cena t_ksiazka.isbn%type; cena_null ; SELECT cena INTO v_cena FROM t_ksiazka WHERE isbn = p_isbn; IF v_cena IS NULL THEN RAISE cena_null; UPDATE t_ksiazka SET cena = cena + p_wartosc WHERE isbn = p_isbn;.. END mod_cene; TBD-wyjątki 15 Wyjątki - przykład cd. PROCEDURE mod_cene (p_isbn t_ksiazka.isbn%type, p_wartosc NUMBER) IS v_cena t_ksiazka.isbn%type;... WHEN NO_DATA_FOUND THEN INSERT INTO komunikat VALUES ( Brak danych ); WHEN cena_null THEN INSERT INTO komunikat VALUES ( Cena początkowa ma wartość nieokreśloną ); END mod_cene; TBD-wyjątki 16 Definiowanie komunikatów Przykład RAISE_APPLICATION_ERROR (numer_błędu, komunikat) numer_błędu: -20000.. -20999 (wybiera użytkownik) komunikat: 512 znaków num_tables NUMBER; SELECT COUNT(*) INTO num_tables FROM USER_TABLES; IF num_tables < 1000 THEN /* Łączymy własny kod błędu (ORA-20101) z własnym komunikatem*/ raise_application_error(-20101, 'Expecting at least 1000 tables');.. / TBD-wyjątki 17 TBD-wyjątki 18

Wyjątki SELECT -- sprawdzenie błędu SELECT -- sprawdzenie błędu SELECT -- sprawdzenie błędu SELECT SELECT SELECT WHEN NO_DATA_FOUND THEN -- obsłuż wyjątek TBD-wyjątki 19 IF x=1 THEN RAISE A; IF x=2 THEN RAISE B; RAISE C; WHEN A THEN WHEN B THEN TBD-wyjątki 20 IF x=1 THEN RAISE A; IF x=2 THEN RAISE B; RAISE C; WHEN A THEN IF x=1 THEN RAISE A; IF x=2 THEN RAISE B; RAISE C; WHEN A THEN WHEN B THEN TBD-wyjątki 21 WHEN B THEN TBD-wyjątki 22 NULL w wyrażeniach i porównaniach ---------- początek bloku zagnieżdżonego past_due ; IF THEN RAISE past_due; ------------- koniec bloku zagnieżdżonego WHEN OTHERS THEN /*nazwa wyjątu past_due nie jest znana*/ ROLLBACK; Dowolne wyrażenie zawierające wartości NULL przybiera wartości NULL (wyjątek stanowi konkatenacja: wartość NULL traktowana jest jako pusty napis) Dowolne porównanie zawierające wartości NULL przybiera wartość NULL Operator IS NULL TBD-wyjątki 23 TBD-wyjątki 24

Sekwencje Sekwencje Obiekty bazy danych używane do generowania unikatowych wartości (zwykle na potrzeby kluczy głównych) Dostęp do kolejnych wartości umożliwiają pseudokolumny NEXTVAL (zwraca wartość zwiększoną w kolejnym kroku) CURRVAL (zwraca bieżącą wartość) CREATE SEQUENCE nazwa_sekwencji [ INCREMENT BY wartość START WITH wartość {MAXVALUE wartość NOMAXVALUE} {MINVALUE wartość NOMINVALUE } {CYCLE NOCYCLE } ] TBD-wyjątki 25 TBD-wyjątki 26 Sekwencje - przykład Sekwencje - przykład CREATE SEQUENCE sekw_2 INCREMENT BY 2 START WITH 100 MAXVALUE 120 CYCLE; FOR i IN 1..5 LOOP INSERT INTO komunikat(nr) END LOOP; VALUES(sekw_2.NEXTVAL); TBD-wyjątki 27 TBD-wyjątki 28 Sekwencje ALTER SEQUENCE nazwa_sekwencji [ INCREMENT BY wartość {MAXVALUE wartość NOMAXVALUE} {MINVALUE wartość NOMINVALUE } {CYCLE NOCYCLE } ] Sekwencje Mogą być używane: w klauzuli SET polecenia UPDATE W zewnętrznym zapytaniu w listach wartości polecenia INSERT Nie mogą być używane: w podzapytaniach w poleceniu SELECT z klauzulami ORDER BY, GROUP BY, CONNECT BY, HAVING z kwantyfikatorem DISTINCT TBD-wyjątki 29 TBD-wyjątki 30

Synonimy Synonimy Synonimy umożliwiają nadawanie alternatywnych nazw dla niektórych obiektów bazy danych Łatwiejsze wprowadzanie poleceń poprzez skrócenie nazwy obiektów znajdujących się w innych schematach tej samej bazy danych lub innych bazach Odizolowanie aplikacji i użytkowników od zmian zachodzących w konstrukcji bazy danych CREATE [PUBLIC] SYNONYM nazwa_synonimu FOR obiekt; Synonimy prywatne: tworzone dla określonej grupy użytkowników Synonimy publiczne: tworzone dla wszystkich użytkowników TBD-wyjątki 31 TBD-wyjątki 32 Synonimy - przykład CREATE PUBLIC SYNONYM s_ksiazka FOR t_ksiazka; RENAME stara_nazwa TO nowa_nazwa; TBD-wyjątki 33