PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ.

Slides:



Advertisements
Podobne prezentacje
Język C/C++ Funkcje.
Advertisements

C++ wykład 7 ( ) Wyjątki.
Wykład 3 Prowadzący: dr Paweł Drozda
Programowanie w języku Visual Basic
Języki programowania C++
Funkcje c.d. Strukturalność. Algorytmy. Ćwiczenia przed kolokwium.
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
Nośniki sygnałów - przykład Nośniki sygnałów – przykład.
Obsługa błędów w programach i zapobieganie ich występowaniu.
27/09/ Języki programowania 1 Piotr Górczyński Obsługa błędów.
27/09/ Języki programowania 1 Piotr Górczyński Instrukcje warunkowego wyboru.
Instrukcje warunkowe Zajęcia 5.
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Instrukcje Instrukcja : definicja obliczenia i określenie sposobu wykonania tego obliczenia. Program : ciąg instrukcji wykonywanych kolejno od pierwszej.
Kurs Pascala – spis treści
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
C++ wykład 7 ( ) Wyjątki. Ogólne spojrzenie na wyjątki Wyjątki zaprojektowano do wspierania obsługi błędów. System wyjątków dotyczy zdarzeń synchronicznych.
Instrukcje 1 Definicje wstępne Formalny opis akcji wykonywanej przez komputer nazywamy instrukcją ( statement), Każda instrukcja kończona jest średnikiem.
Temat nr 10: System przerwań
Komunikacja z arkuszem. Iteracje. Funkcje.
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Wstęp do interpretacji algorytmów
PASCAL (2) dr Anna Kwiatkowska.
Typy wyrażenia, schematy blokowe, writeln, readln, if, pętle
Schemat Hornera Mgr inż. Michał Szucki.
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
Słowa kluczowe oraz nazwy obiektów i klas rozpoczynaj od dużej litery np. Loop, Dim, FileStream Rozpoczynaj nazwę zmiennej od małej litery stosując styl.
Podstawy programowania
A ctive S erver P ages Technologia dostępu do danych.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Instrukcje sterujące część 2
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Programowanie w języku Matlab
PHP: warunki, pętle, switch, break, continue
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
Instrukcje iteracyjne
Instrukcja warunkowa i wyboru
Podstawy informatyki 2013/2014
Programowanie baz danych
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Składnia instrukcji warunkowej if…
Ogólna struktura programu w TP
PL/SQL – dalsza wędrówka
Iteracje w C# Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
Instrukcje wyboru.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wstęp do interpretacji algorytmów
PO13-1 / 19 Wykład 13 Wyjątki i ich zgłaszanie Wyłapywanie wyjątków Obsługa wyjątków Wykorzystanie polimorfizmu Filtrowanie wyjątków Błędy w konstruktorach.
Pętle – instrukcje powtórzeń
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Visual Basic przygotował Michał Miłek Visual Basic – język programowania wysokiego poziomu i narzędzie programistyczne firmy Microsoft. Składnia jest oparta.
Podstawy informatyki Mechanizm obsługi sytuacji wyjątkowych Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Teoretyczne założenia
Dzisiejsze zajęcia będą wyjątkowe…
Visual Basic w programie Microsoft Excel
Dane, zmienne, instrukcje
Zapis prezentacji:

PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ

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. PL/SQL(2) M. Rakowski - WSISiZ

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 PL/SQL(2) M. Rakowski - WSISiZ

Przykład obsługi wyjątku DECLARE x NUMBER := 1; y NUMBER := 1; BEGIN DBMS_OUTPUT.PUT_LINE( x/y ); DBMS_OUTPUT.PUT_LINE(‘ Dalsze wykonanie’); EXCEPTION WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.PUT_LINE(‘ y wyniosło zero!!!’); END; Zadanie: Wykonać kod jak powyżej, następnie zmienić y na 0 i wykonać, a następnie objąć komentarzem całą sekcję obsługi wyjątku ( /* .. */ lub każdą linię --) i wykonać PL/SQL(2) M. Rakowski - WSISiZ

Definiowanie własnych wyjątków Definiowanie w sekcji deklaracyjnej bloku PL/SQL własnego wyjątku DECLARE ex_koniec EXCEPTION; BEGIN Wiązanie błędu ze zdefiniowanym wyjątkiem ex_zly_miesiac EXCEPTION ; PRAGMA EXCEPTION_INIT(ex_zly_miesiac, -1843 ); DBMS_OUTPUT.PUT_LINE( to_date( '13-13-2005', 'dd-mm-yyyy') ); EXCEPTION WHEN ex_zly_miesiac THEN DBMS_OUTPUT.PUT_LINE( 'to zły miesiąc był..' ); END; Zadanie: analogicznie zbudować obsługę złej specyfikacji dnia PL/SQL(2) M. Rakowski - WSISiZ

Wykorzystanie wyjątków Standaryzacja struktur oprogramowania (jedno miejsce obsługi wyjątku dla bloku, specyficzne wykorzystanie jako instrukcji sterującej - warunkowej) Komunikacja błędów w modelu klient serwer (przekazywanie komunikatu błędu oprogramowaniu wywołującemu operację) Raise_Application_Error( numer_bledu , tekst_opisu_bledu ) ; Gdzie: numer_bledu – <-20000, -20999> (dla uniknięcia konfliktu) tekst_opisu_bledu – ciąg znaków do 2048 znaków PL/SQL(2) M. Rakowski - WSISiZ

Schemat zastosowania wyjątku w aplikacji klienckiej Operacja na serwerze BEGIN … IF b_nie_znaleziono_stawek THEN RAISE_APPLICATION_ERROR(-20101 , ‘Brak aktualnych stawek'); END IF; END; Kod oprogramowania klienckiego DECLARE ex_brak_stawek EXCEPTION; PRAGMA EXCEPTION_INIT(ex_brak_stawek, -20101); BEGIN … Operacja(…); EXCEPTION WHEN ex_brak_stawek THEN Zapisz_Blad (SQLERRM); END; PL/SQL(2) M. Rakowski - WSISiZ

Instrukcje warunkowe; IF Składnia: IF warunek THEN ciąg instrukcji [ ELSIF warunek THEN ] * ELSE ] END IF; Gdzie: warunek może się składać z ciągu warunków lub wartości logicznych (również uzyskiwanych funkcjami) połączonych spójnikami *- oznacza możliwą wielokrotność ciąg instrukcji oznacza jedną lub więcej instrukcję PL/SQL PL/SQL(2) M. Rakowski - WSISiZ

Instrukcje warunkowe: CASE Składnia: Wersja 1: CASE element_sprawdzany [ WHEN wartość THEN ciąg instrukcji ]1* [ ELSE ciąg instrukcji ]! END CASE; Wersja 2: CASE [ WHEN warunek THEN ciąg instrukcji ]1* Gdzie: 1* oznacza minimum jedno wystąpienie ! oznacza, że mimo, że sekcja nie musi wystąpić, nie znalezienie obsługiwanego przypadku powoduje błąd, gdy sekcja nie występuje warunek – wyrażenie posiadające wartość logiczną PL/SQL(2) M. Rakowski - WSISiZ

Instrukcje warunkowe: CASE cd Instrukcja CASE funkcjonuje również jako operator umożliwiający określenie wartości (analogia do SQL 9i): Składnia: Zmienna := CASE element_sprawdzany [ WHEN wartość THEN wartość ]1* [ ELSE wartość ] END; Gdzie: 1* oznacza minimum jedno wystąpienie PL/SQL(2) M. Rakowski - WSISiZ

Instrukcje pętli: LOOP Składnia: LOOP ciąg instrukcji PL/SQL END LOOP; Polecenie EXIT bez parametru służy do bezwarunkowego lub warunkowego wyjścia z pętli. EXIT [WHEN warunek] ; Parametry: warunek – wyrażenie posiadające wartość logiczną. Wyjście następuje tylko wtedy, gdy wynikiem obliczenia warunku jest wartość TRUE. PL/SQL(2) M. Rakowski - WSISiZ

Instrukcje pętli: FOR Składnia: FOR zmienna_indeksowa IN [REVERSE] zakres LOOP ciąg instrukcji PL/SQL END LOOP; Pętla FOR udostępnia możliwość wykonywania przy pomocy zmiennej indeksowej, która iterowana jest w zdefiniowanym zakresie. Deklaracja zmiennej indeksowej nie jest obowiązkowa, ale zakres istnienia zmiennej indeksowej dotyczy tylko danej pętli. Zakres może być zdefiniowany jako numeryczny ( wartosc_od..wartosc_do ) lub kursorowy. Istnieje klauzula REVERSE umożliwiająca zmniejszanie zmiennej indeksowej pętli (domyślnie indeks jest zwiększany). PL/SQL(2) M. Rakowski - WSISiZ

Instrukcje pętli: WHILE Składnia: WHILE warunek LOOP ciąg instrukcji END LOOP; Pętla jest iterowana dotąd, dopóki jest spełniony warunek (posiada wartość logiczną TRUE). PL/SQL(2) M. Rakowski - WSISiZ

Zadania Za pomocą anonimowego bloku z inicjowaną zmienną x umożliwić wypisanie wartości funkcji na podstawie wykresu Napisany w p.1 blok zmodyfikować aby wypisać zakres zachowania się funkcji w zakresie -5..5 (dla liczb całkowitych) Napisany w p. 1 blok zmodyfikować tak, żeby od zadanej, inicjacją zmiennej, wielkości podać największą wartość argumentu całkowitego funkcji przy której wartość funkcji jest ujemna. PL/SQL(2) M. Rakowski - WSISiZ