PL/SQL
Zajęcia nr II
Obsługa wyjątków
Wyjątkiem w PL/SQL jest spełnienie warunków wystąpienia sytuacji nieprawidłowej, w której ciąg instrukcji nie jest dalej realizowany, ale
realizacja przechodzi do odpowiedniego miejsca bloku PL/SQL w klauzuli EXCEPTION lub sytuacja zgłaszana jest jako błąd środowisku
wywołującemu.
Wyjątki dzielą się na predefiniowane i definiowane przez użytkownika.
Przykładami wyjątków predefiniowanych mogą być: "NO_DATA_FOUND" lub
"TOO_MANY_ROWS".
W języku PL/SQL użytkownik może definiować wyjątki w części deklaracyjnej
bloku PL/SQL oraz wiązać błędy PL/SQL ze zdefiniowanymi wyjątkami.
Wyjątki predefiniowane
• CURSOR_ALREADY_OPEN - wywoływany w przypadku próby otwarcia kursora już otwartego;
• INVALID_CURSOR - wywoływany w przypadku próby dostępu do nieprawidłowego kursora (np. nie otwartego);
• INVALID_NUMBER - wywoływany w przypadku próby wykonania konwersji do typu numerycznego z tekstu, który nie reprezentuje liczby;
• NO_DATA_FOUND - wywoływany wtedy, gdy rozkaz SELECT powinien zwrócić jeden wiersz a nie zwraca żadnego (np. SELECT ... INTO) oraz wskazaniu nieokreślonej komórki tablicy PL/SQL ;
• STORAGE_ERROR - wywoływany w przypadku braku wolnej pamięci lub uszkodzenia zawartości pamięci;
• TOO_MANY_ROWS - wywoływany w przypadku, gdy rozkaz SELECT zwraca więcej niż jeden wiersz, a oczekiwany jest tylko jeden (np. SELECT ... INTO);
• VALUE_ERROR - wywoływany w przypadku przypisania złej wartości do zmiennej lub pola;
• ZERO_DIVIDE - próba dzielenia przez zero;
Wyjątki (jako obsługa poszczególnych błędów) są definiowane w pakiecie STANDARD
Klauzula OTHERS nie jest specyfikowanym wyjątkiem, ale sekcją obsługi dowolnego wyjątku