OBSŁUGA WYJĄTKÓW. Mechanizm języka PL/SQL. Wyjątki:
|
|
- Agata Skowrońska
- 8 lat temu
- Przeglądów:
Transkrypt
1 OBSŁUGA WYJĄTKÓW W języku PL/SQL zaimplementowano obsługę błędów za pomocą: mechanizmu wyjątków programów obsługi wyjątków w tzw. sekcji obsługi wyjątków. Wyjątki mogą być związane z: błędami systemu Oracle błędami zdefiniowanymi przez użytkownika. Tak zaprojektowany, funkcjonujący w ramach danego programu mechanizm zapewnia, że wszelkie błędy będą usuwane i naprawiane w optymalny sposób. Wyjątki w języku PL/SQL są podobne do wyjątków w języku Java. Przykładowo, wyjątki Javy są zgłaszane i wykrywane w taki sam sposób jak w PL/SQL-u. Jednak inaczej niż w Javie wyjątki w języku PL/SQL nie są obiektami i nie można dla nich definiować metod. Należy sobie odpowiedzieć na pytanie, jakiego rodzaju błędy mogą wystąpić w programie PL/SQL. Błędy można klasyfikować zgodnie z zasadami przyjętymi w poniższej tabeli. Typ błędu Zgłaszany przez Obsługa Występujący podczas kompilacji programu Występujący podczas wykonywania programu Wyjątki: Kompilator PL/SQL Mechanizm języka PL/SQL Interaktywna kompilator zgłasza błędy, a programista musi je poprawić Programowa wyjątki są zgłaszane i przechwytywane przez programy obsługi wyjątków są przeznaczone do obsługi błędów powstających podczas wykonywania programu, nie obsługują tych pojawiających się podczas kompilacji, bowiem wówczas te błędy są wykrywane przez mechanizm języka PL/SQL i zgłaszane użytkownikowi program nie może ich obsłużyć, ponieważ nie jest jeszcze uruchomiony. Przykładowo poniższy blok, w którym nieprawidłowo podano identyfikator Ttowary w instrukcji SELECT z_liczbaproduktów NUMBER; SELECT COUNT(*) INTO z_liczbaproduktow FROM ttowary; spowoduje powstanie błędu kompilacji: PLS-201: identyfikator TTOWARY musi być zadeklarowany 1
2 Wyjątki i programy obsługi wyjątków są metodami reakcji i sposobu postępowania programu w sytuacji wystąpienia błędów podczas wykonywania programu. Do błędów występujących podczas wykonywania programu zalicza się błędy SQL, takie jak: ORA-1: naruszono więzy unikatowe oraz błędy proceduralne ORA-06502: PL/SQL: błąd wartości lub numeryczny Po wystąpieniu błędu następuje zgłoszenie wyjątku. Wyjątek powoduje przekazanie sterowania do bloku obsługi wyjątków, który jest oddzielną sekcją programu. Taki sposób organizacji kodu zapewnia oddzielenie obsługi błędów od reszty programu, co ułatwia zrozumienie logiki programu i zapewnia, że wszystkie błędy zostaną wykryte. W przypadku języka, który nie stosuje modelu wyjątków do obsługi błędów (np. język C), w celu zapewnienia prawidłowej obsługi błędów we wszystkich przypadkach jest konieczne wstawienie kodu obsługi błędów, co ilustruje poniższy przykład: int x, y, z f(x); /* wywołanie funkcji, przekazanie x jako argumentu */ if <wystapil błąd> obsluga błędu(...); y=1/z; if <wystapil błąd> obsluga błędu(...); z=x+y if <wystapil błąd> obsluga błędu(...); Porównajmy poprzedni przykład z analogicznym fragmentem programu, tym razem zapisanym w języku PL/SQL: x NUMBER; y NUMBER; z NUMBER; f(x); y:=1/z; z:=x+y WHEN OTHERS THEN /* Program obsługi wykonywany dla wszystkich błędów */ program_obsługi_błedow(...) END 2
3 Należy zwrócić uwagę, że sekcja obsługi błędów jest oddzielona od reszty programu. Takie rozwiązanie zabezpiecza przed następującymi problemami, pojawiającymi się w programach utworzonych w języku C: Łatwiej można zrozumieć założenia programu, ponieważ jego poszczególne elementy są w logiczny sposób wyodrębnione. Niezależnie od tego, której instrukcji wykonanie się nie powiedzie, program wykryje i obsłuży błąd. Wynika to z faktu, iż program nie będzie kontynuował swego działania od instrukcji, która spowodowała błąd. Sterowanie zostanie przekazane do programu obsługi wyjątków, a następnie do bloku zewnętrznego. Deklarowanie wyjątków Wyjątki są: deklarowane w sekcji deklaracji bloku, zgłaszane w sekcji wykonania obsługiwane w sekcji wyjątków. Istnieją dwa typy wyjątków: definiowane przez użytkownika predefiniowane. Wyjątki definiowane przez użytkownika Wyjątek zdefiniowany przez użytkownika jest błędem określanym przez programistę podczas tworzenia programu. Błąd, który jest związany z takim wyjątkiem, niekoniecznie jest błędem systemu Oracle, np. może być błędem związanym z danymi. Wyjątki predefiniowane są związane z powszechnie występującymi błędami języków SQL i PL/SQL. Wyjątki zdefiniowane przez użytkownika są deklarowane w sekcji deklaracji bloku PL/SQL. Podobnie jak zmienne wyjątki te posiadają swój typ () oraz zakres, np.: w_zbytduzoproduktowwycofanych ; gdzie w_zbytduzoproduktowwycofanych jest identyfikatorem widocznym aż do końca danego bloku. Należy zwrócić uwagę, że zakres wyjątku jest taki sam jak zakres każdej innej zmiennej lub kursora w tej samej sekcji deklaracji. Wyjątki predefiniowane W języku PL/SQL istnieje pewna liczba predefiniowanych wyjątków, które odpowiadają najczęściej występującym błędom systemu Oracle. Ponieważ identyfikatory dla tych wyjątków są zdefiniowane w pakiecie STANDARD, dlatego wyjątki predefiniowane są dostępne bezpośrednio do wykorzystania w programie nie jest konieczne ich deklarowanie w sekcji deklaracji, jak w przypadku wyjątków zdefiniowanych przez użytkownika. 3
4 W poniższej tabeli opisano niektóre najpopularniejsze błędy obsługiwane w systemie Oracle. Wyjątki predefiniowane w języku PL/SQL Błąd Oracle Nazwa wyjątku Objaśnienie ORA-0001 DUP_VAL_ON_INDEX Naruszono ograniczenie unikalności. Ten wyjątek pojawia się w wyniku próby umieszczenia rekordu w tabeli z określonym kluczem głównym, gdy wstawiany rekord będzie powodował zduplikowanie wartości klucza już istniejącego w tabeli ORA-0051 TIMEOUT_ON_RESOURCE Podczas oczekiwania na zwolnienie zasobów nastąpiło przekroczenie limitu czasu ORA-0061 TRANSACTION_BACKED_OUT Transakcja wycofana z powodu zakleszczenia ORA-1001 INVALID_CURSOR Nieprawidłowa operacja kursora ORA-1012 NOT_LOGGED_ON Brak połączenia z bazą Oracle ORA-1017 LOGIN_DENIED Nieprawidłowa nazwa użytkownika lub nieprawidłowe hasło. ORA-1403 NO_DATA_FOUND Nie odnaleziono danych. Jeśli instrukcja SELECT nie zwróci żadnego wiersza, wystąpi ten błąd. Zazwyczaj pojawia się w przypadku wybrania kursora niejawnego i wykonania instrukcji SELECT INTO. ORA-1410 SYS_INVALID_ROWID Konwersja do uniwersalnego identyfikatora rowid nie powiodła się. ORA-1422 TOO_MANY_ROWS Wyjątek pojawia się w przypadku, gdy instrukcja SELECT INTO która powinna zwracać jeden wiersz, zwraca ich więcej. ORA-1476 ZERO_DIVIDE Dzielenie przez zero. ORA-1722 INVALID_NUMBER Konwersja do wartości liczbowej nie powiodła się. ORA-6500 STORAGE_ERROR Brak wystarczającej ilości pamięci podczas wykonywania operacji PL/SQL powoduje wystąpienie wewnętrznego błędu PL/SQL. ORA-6501 PROGRAM_ERROR Błąd wewnętrzny PL/SQL. ORA-6504 ROWTYPE_MISMATCH Zmienna kursora hosta oraz zmienna kursora PL/SQL mają niezgodne typy. ORA-6502 VALUE_ERROR Błąd arytmetyczny (obcięcia lub konwersji). Ten błąd powstaje w wyniku podjęcia próby umieszczenia wartości zmiennej, gdy zmienna jest niezgodnego typu (np. próba umieszczenia tekstu w polu liczbowym) albo wartość jest zbyt duża (np. umieszczenie wartości tekstowej o długości przekraczającej długość zadeklarowanej zmiennej) ORA CURSOR_ALREADY_OPEN Próba otwarcia już otwartego kursora. ORA-6530 ACCESS_INTO_NULL Próba przypisania wartości atrybutom niezainicjowanego (o wartości NULL) obiektu. ORA-6531 COLLECTION_IS_NULL Próba zastosowania metod kolekcji innych niż EXISTS do niezainicjowanej (o wartości NULL) tabeli PL/SQL lub tablicy VARRAY. ORA-6532 SUBSCRIPT_OUTSIDE_LIMIT Odwołanie do indeksu tabeli zagnieżdżonej lub indeksu tablicy VARRAY na zewnątrz deklarowanego zakresu (np.-1) ORA-6533 SUBSCRITP_BEYOND_COUNT Odwołanie do do indeksu tabeli zagnieżdżonej lub indeksu tablicy VARRAY większego niż liczba elementów w kolekcji. ORA_65-92 CASE_NOT_FOUND W instrukcji CASE nie znaleziono klauzuli WHEN spełniającej warunek. ORA SELF_IS_NULL Próba wywołania metody dla egzemplarza obiektu o wartości NULL. 4
5 Zgłaszanie wyjątków. W każdym przypadku, gdy podczas wykonywania programu w języku PL/SQL występuje błąd, program sprawdza, czy użytkownik przygotował odpowiednie zabezpieczenia na taką ewentualność. Sprawdzając sekcję wyjątków program weryfikuje, czy wystąpienie problemu było przewidywane. System Oracle zawiera wbudowane pewne mechanizmy obsługi wyjątków. W przypadku konieczności obsługi błędu, którego jeszcze nie uwzględniono w danym systemie Oracle, można utworzyć wyjątek zdefiniowany przez użytkownika. Po wystąpieniu błędu związanego z pewnym wyjątkiem następuje zgłoszenie tego wyjątku Wyjątki zdefiniowane przez użytkownika są zgłaszane jawnie przez instrukcję RAISE, podczas gdy wyjątki predefiniowane (lub zdefiniowane przez użytkownika za pomocą dyrektywy pragma _INIT, związane z błędami systemu Oracle) są zgłaszane niejawnie, w razie wystąpienia skojarzonych z nimi błędów systemu Oracle. Jeżeli wystąpi błąd, który nie został skojarzony z żadnym z wyjątków, to także zgłaszany jest wyjątek. Może on być przechwycony przez program obsługi wyjątku OTHERS. Błąd Oracle Nazwa wyjątku Objaśnienie Nieokreślony OTHERS -- Wyjątek do wskazania błędu w_zbytduzoproduktowwycofanych ; -- Bieżąca liczba produktów wycofanych w_biez_l_produktow NUMBER(3); -- Maksymalna liczba produktów wycofanych z_maks_l_produktow NUMBER(3); Ten wyjątek służy do przechwytywania wszelkich błędów nieobsługiwanych przez programy obsługi określonych wyjątków. Warto zwrócić uwagę, iż ten program obsługi błędów musi być zawsze umieszczony na końcu, ponieważ system Oracle nie obsługuje żadnych wyjątków następujących po tym programie. /* Odszukanie bieżącej liczby produktów wycofanych oraz maksymalnej liczby produktów wycofanych */ SELECT biez_l_produktow, maks_l_produktow INTO z_biez_l_produktow, z_maks_l_produktow FROM towary WHERE wycofany = Tak ; /* Sprawdzenie liczby produktów wycofanych, czy nie przekracza ustalonej maksymalnej liczby produktów wycofanych */ IF z_biez_l_produktow z_maks_l_produktow THEN -- Za dużo produktów wycofanych zgłoszenie wyjątku RAISE w_zbytduzoproduktowwycofanych; END IF; 5
6 Po zgłoszeniu wyjątku sterowanie jest natychmiast przekazywane do sekcji obsługi wyjątków danego bloku. Jeżeli sekcja wyjątków w danym bloku nie istnieje, wyjątek jest propagowany do bloku obejmującego. Po przekazaniu sterowania do programu obsługi wyjątków nie ma możliwości powrotu do sekcji wykonywania bloku. Sytuację tę ilustruje poniższy rysunek. Tutaj jest deklarowany wyjątek A. A ;... RAISE A; Tutaj jest wywoływany wyjątek A. Każdy kod, który tutaj występuje, nie jest wykonywany. WHEN A THEN Sterowanie jest przekazywane do programu obsługi wyjątków. Kod, który tutaj występuje, będzie wykonany. Rys 1. Przekazanie sterowania do programu obsługi wyjątków Wyjątki predefiniowane są zgłaszane automatycznie w razie wystąpienia związanego z nimi błędu systemu Oracle, np. poniższy blok PL/SQL wywołuje wyjątek DUP_VAL_ON_INDEX: INSERT INTO Towary(nr, nazwa, cena_jedn) VALUES (1002, Czekolada mleczna, 2,70); INSERT INTO Towary(nr, nazwa, cena_jedn) VALUES (1002, Czekolada deserowa, 2,10); Zgłoszenie wyjątku nastąpiło ze względu na to, iż kolumna nr tabeli towary stanowi klucz główny i dlatego zdefiniowano na niej ograniczenie unikalności. W razie próby wstawienia nowej wartości 1002 do kolumny nr przez kolejną instrukcję INSERT następuje wywołanie następującego błędu: ORA-0001: naruszono więzy unikatowe Powyższy błąd odpowiada wyjątkowi DUP_VAL_ON_INDEX. Obsługa wyjątków Po zgłoszeniu wyjątku sterowanie jest przekazywane do sekcji obsługi wyjątków bloku, którą to sytuację przedstawia powyższy rysunek. Sekcja obsługi wyjątków składa się z programu obsługi niektórych lub 6
7 wszystkich wyjątków. Program ten zawiera kod, który jest wykonywany w razie wystąpienia błędu skojarzonego z danym wyjątkiem i jeśli dany wyjątek zostanie zgłoszony. Składnię sekcji obsługi wyjątków pokazano poniżej: WHEN nazwa_wyjątku THEN 1_sekwencja_instrukcji WHEN nazwa_wyjątku THEN 2_sekwencja_instrukcji WHEN OTHERS THEN 3_sekwencja_instrukcji Każdy program obsługi wyjątków składa się z klauzuli WHEN oraz instrukcji, które będą wykonywane po zgłoszeniu wyjątku. Klauzula WHEN służy do określenia, który wyjątek ma być obsługiwany przez dany program obsługi. Poniżej przedstawiona zostanie kontynuacja poprzedniego przykładu: -- Wyjątek do wskazania błędu w_zbytduzoproduktowwycofanych ; -- Bieżąca liczba produktów wycofanych w_biez_l_produktow NUMBER(3); -- Maksymalna liczba produktów wycofanych z_maks_l_produktow NUMBER(3); /* Odszukanie bieżącej liczby produktów wycofanych oraz maksymalnej liczby produktów wycofanych */ SELECT biez_l_produktow, maks_l_produktow INTO z_biez_l_produktow, z_maks_l_produktow FROM stan_produkty WHERE wycofany = Tak ; /* Sprawdzenie liczby produktów wycofanych, czy nie przekracza ustalonej maksymalnej liczby produktów wycofanych */ IF z_biez_l_produktow z_maks_l_produktow THEN -- Za dużo produktów wycofanych zgłoszenie wyjątku RAISE w_zbytduzoproduktowwycofanych; END IF; WHEN w_zbytduzoproduktowwycofanych THEN 7
8 /*Program obsługi jest wykonywany, jeśli bieżąca liczba produktów wycofanych przekracza ustaloną maksymalną liczbę tych produktów. Wprowadzona zapis do dziennika, który zapisuje ten fakt */ INSERT INTO dziennik_błędów(informacja, data_informacji) VALUES ( Bieżąca liczba produktów wycofanych z_biez_l_produktow przekracza ustalona maksymalną liczbę tych produktów z_maks_l_produktow, SYSDATE); Jeden program obsługi może być również wykonywany dla więcej niż jednego wyjątku. W tym celu należy po prostu wykazać w klauzuli WHEN nazwy wyjątków oddzielone od siebie słowem kluczowym OR, jak w poniższym przykładzie: WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN INSERT INTO dziennik_błędów(informacja) VALUES ( Wystąpił błąd instrukcji SELECT ); Inaczej niż w języku Java sekcja wyjątków bloku może zawierać programy obsługi dla wyjątków, które nie zostały zgłoszone w sekcji wykonania oraz może nie obsługiwać wyjątków zgłoszonych w sekcji wykonania. Kompilator języka PL/SQL pod tym względem nie sprawdza poprawności sekcji wyjątków. Określony wyjątek może być obsłużony przez co najwyżej jeden program obsługi wyjątków w sekcji wykonania. Jeśli istnieje więcej programów obsługi dla wyjątku, kompilator języka PL/SQL zgłosi błąd PLS-483, co ilustruje poniższa sesja programu SQL*Plus: -- Zadeklarowanie 2 wyjątków definiowanych przez użytkownika: w_wyjatek1 ; w_wyjatek2 ; -- Zgłoszenie wyjątku w_wyjatek1 RAISE w_wyjatek1 WHEN w_wyjatek2 THEN INSERT INTO dziennik_bledow(informacja) VALUES ( wykonano pierwszy program obsługi wyjątków ); WHEN w_wyjatek1 THEN INSERT INTO dziennik_bledow (informacja) VALUES ( wykonano drugi program obsługi wyjątków ); WHEN w_wyjatek1 OR w_wyjatek2 THEN INSERT INTO dziennik_bledow (informacja) VALUES ( wykonano trzeci program obsługi wyjątków ); 8
9 WHEN w_wyjatek1 OR w_wyjatek2 THEN * BŁĄD w linii 15 ORA-06550: linia 15, kolumna 7 PLS-00483: wyjątek W_WYJATEK2 może się znaleźć w co najwyżej jednej obsłudze wyjątków w tym bloku. ORA-06550: linia 0, kolumna 0 PL/SQL: Przerwano proces analizy modułów w czasie kompilacji Klauzula obsługi wyjątku OTHERS W języku PL/SQL występuje specjalna klauzula obsługi wyjątków WHEN OTHERS. Klauzula ta będzie wykonywana dla wszystkich zgłaszanych wyjątków, których nie obsłużono w pozostałych klauzulach WHEN w bieżącej sekcji wyjątków. Powinna ona być zawsze ostatnią klauzulą obsługi błędów w bloku tak, aby wszystkie poprzednie (bardziej szczegółowe) klauzule obsługi błędów były wcześniej sprawdzone. Klauzula WHEN OTHERS obsłuży wszystkie rodzaje wyjątków, niezależnie od tego czy są one predefiniowane, czy też zdefiniowane przez użytkownika. Do dobrej praktyki programistycznej zalicza się uwzględnianie klauzuli obsługi wyjątków OTHERS na najwyższym poziomie programu (blok najbardziej zewnętrzny) w celu zapewnienia wykrywania wszystkich błędów. W innym przypadku błędy będą propagowane do środowiska wywołania. Może to spowodować niepożądane efekty, jak np. wycofanie bieżącej transakcji. Poniżej przedstawiono kontynuację rozpoczętego wcześniej przykładu. -- Wyjątek do wskazania błędu w_zbytduzoproduktowwycofanych ; -- Bieżąca liczba produktów wycofanych w_biez_l_produktow NUMBER(3); -- Maksymalna liczba produktów wycofanych z_maks_l_produktow NUMBER(3); -- Odszukanie bieżącej liczby produktów wycofanych oraz maksymalnej liczby produktów wycofanych SELECT biez_l_produktow, maks_l_produktow INTO z_biez_l_produktow, z_maks_l_produktow FROM stan_produkty WHERE wycofany = Tak ; /* Sprawdzenie liczby produktów wycofanych, czy nie przekracza ustalonej maksymalnej liczby produktów wycofanych */ IF z_biez_l_produktow z_maks_l_produktow THEN -- Za dużo produktów wycofanych zgłoszenie wyjątku RAISE w_zbytduzoproduktowwycofanych; END IF; WHEN w_zbytduzoproduktowwycofanych THEN 9
10 /*Program obsługi jest wykonywany, jeśli bieżąca liczba produktów wycofanych przekracza ustaloną maksymalną liczbę tych produktów. Wprowadzona zapis do dziennika, który zapisuje ten fakt*/ INSERT INTO dziennik_bledow(informacja, data_informacji) VALUES ( Bieżąca liczba produktów wycofanych z_biez_l_produktow przekracza ustalona maksymalną liczbę tych produktów z_maks_l_produktow, SYSDATE); WHEN OTHERS THEN -- Klauzula obsługi wykonywana dla wszystkich innych błędów INSERT INTO dziennik_bledow(informacja, data_informacji) VALUES ( Wystąpił inny błąd, SYSDATE); Klauzula obsługi błędów OTHERS, przedstawiona w powyższym przykładzie, jedynie zapisuje fakt wystąpienia błędu, jednak bez wskazania jego rodzaju. Dzięki predefiniowanym funkcjom SQLCODE oraz SQLERRM, można określić rodzaj błędu wywołującego wyjątek. Nie należy definiować klauzuli obsługi wyjątków w postaci WHEN OTHERS THEN NULL; ponieważ spowoduje to przechwytywanie nieoczekiwanych błędów bez ich rejestrowania. Dobry program obsługi wyjątków OTHERS zarejestruje błąd, a także dodatkowe informacje, pozwalające na późniejszą analizę sytuacji. Funkcje SQLCODE oraz SQLERRM Wewnątrz klauzuli obsługi OTHERS warto uwzględnić zapewnienie dostępu do informacji, który błąd Oracle spowodował zgłoszenie określonego wyjątku, niezależnie od tego, czy z błędem jest związany wyjątek predefiniowany, czy też nie. Jednym z powodów jest zarejestrowanie rodzaju błędu, a nie tylko faktu jego zaistnienia. Znajomość rodzaju zaistniałego błędu sprzyja określeniu odpowiednich operacji, które powinny zostać wykonane. Język PL/SQL umożliwia uzyskiwanie takich informacji za pomocą dwóch wbudowanych funkcji: SQLCODE oraz SQLERRM. Funkcja SQLCODE zwraca bieżący kod błędu, a funkcja SQLERRM zwraca tekst komunikatu o bieżącym błędzie. Dla wyjątków zdefiniowanych przez użytkownika funkcja SQLCODE zwraca wartość1, natomiast funkcja SQLERRM komunikat User-defined Exception (wyjątek zdefiniowany przez użytkownika). Poniżej podano zapis całości bloku PL/SQL, który dotąd był analizowany. Warto przeanalizować budowę kompletnej klauzuli obsługi wyjątków OTHERS. -- Wyjątek do wskazania błędu w_zbytduzoproduktowwycofanych -- Bieżąca liczba produktów wycofanych w_biez_l_produktow NUMBER(3); -- Maksymalna liczba produktów wycofanych z_maks_l_produktow NUMBER(3); -- Kod oraz tekst innych błędów wykonania z_kodbledu dziennik_błędów.kod%type; z_komunikatbledu dziennik_błędów.komunikat%type; 10
11 /* Odszukanie bieżącej liczby produktów wycofanych oraz maksymalnej liczby produktów wycofanych */ SELECT biez_l_produktow, maks_l_produktow INTO z_biez_l_produktow, z_maks_l_produktow FROM stan_produkty WHERE wycofany = Tak ; /* Sprawdzenie liczby produktów wycofanych, czy nie przekracza ustalonej maksymalnej liczby produktów wycofanych */ IF z_biez_l_produktow z_maks_l_produktow THEN -- Za dużo produktów wycofanych zgłoszenie wyjątku RAISE w_zbytduzoproduktowwycofanych; END IF; WHEN w_zbytduzoproduktowwycofanych THEN /*Program obsługi jest wykonywany, jeśli bieżąca liczba produktów wycofanych przekracza ustaloną maksymalną liczbę tych produktów. Wprowadzona zapis do dziennika, który zapisuje ten fakt*/ INSERT INTO dziennik_błędów(informacja, data_informacji) VALUES ( Bieżąca liczba produktów wycofanych z_biez_l_produktow przekracza ustalona maksymalną liczbę tych produktów z_maks_l_produktow, SYSDATE); WHEN OTHERS THEN -- Klauzula obsługi wykonywana dla wszystkich innych błędów z_kodbledu:=sqlcode; z_komunikatbledu:=substr(sqlerrm,1,200); -- Należy zwrócić uwagę na zastosowanie w tym miejscu funkcji SUBSTR INSERT INTO dziennik_bledow(kod, komunikat, informacja, data_informacji) VALUES (z_kodbledu, z_komunikatbledu, Wystąpił błąd Oracle,SYSDATE); Maksymalna długość komunikatu o błędzie wynosi 512 znaków. W powyższym przykładzie zmienna z_komunikabledu ma długość tylko 200 znaków (w celu dopasowania do pola kod tabeli dziennik_bledow). Jeżeli tekst komunikatu o błędzie jest dłuższy niż 200 znaków, to samo przypisanie: z_komunikatbledu:= SQLERRM; spowoduje zgłoszenie wyjątku predefiniowanego VALUE_ERROR. Aby tego uniknąć, należy użyć wbudowanej funkcji SUBSTR w celu zapewnienia, że zmiennej z_komunikatbledu zostanie przypisanych najwyżej 200 znaków tekstu komunikatu o błędzie. Należy zwrócić uwagę, że funkcje SQLCODE i SQLERRM są najpierw przypisywane do zmiennych lokalnych. Zmienne te są następnie stosowane w instrukcji SQL. Funkcje te są proceduralne, a zatem nie można ich wykorzystać bezpośrednio w instrukcji SQL. 11
12 Funkcja SQLERRM może być również wywołana z pojedynczym argumentem liczbowym. W takim przypadku funkcja zwraca tekst skojarzony z liczbą. Powyższy argument powinien być zawsze liczbą ujemną. Jeżeli funkcja SQLERRM jest wywoływana z wartością równą zeru, to następuje zwrócenie następującego komunikatu: ORA-0000: normal, successful completion (normalne, udane zakończenie operacji) Jeżeli funkcja SQLERRM jest wywoływana z dodatnią wartością różną od +100, następuje zwrócenie komunikatu: non-oracle Exception ( wyjątek nie jest wyjątkiem systemowym Oracle) Funkcja SQLERRM(100) zwraca: ORA-1403: no data found (nie znaleziono danych) Funkcja SQLCODE wywołana z klauzuli obsługi wyjątków zwraca wartość ujemną oznaczającą błąd systemu Oracle. Odstępstwem od tej reguły jest błąd ORA-1403: no data found (nie znaleziona danych), kiedy funkcja SQLCODE zwraca wartość równą +100 (100 odpowiada kodowi ANSI błędu NO DATA FOUND BRAK DANYCH). Funkcja SQLERRM (bez żadnych argumentów) wywołana z sekcji wykonania bloku zwraca zawsze: ORA-0000: normalne, udane zakończenie Natomiast funkcja SQLCODE zwraca 0. Wszystkie opisywane sytuacje są przedstawione w poniższej przykładowej sesji programu SQL*Plus. SQL> 2. DBMS_OUTPUT.PUT_LINE( SQLERRM(0): SQLERRM(0)); 3. DBMS_OUTPUT.PUT_LINE( SQLERRM(100): SQLERRM(100)); 4. DBMS_OUTPUT.PUT_LINE( SQLERRM(10): SQLERRM(10)); 5. DBMS_OUTPUT.PUT_LINE( SQLERRM: SQLERRM); 6. DBMS_OUTPUT.PUT_LINE( SQLERRM(-1): SQLERRM(-1); 7. DBMS_OUTPUT.PUT_LINE( SQLERRM(-54): SQLERRM(54); / SQLERRM(0): ORA-000: normal, successful completion SQLERRM(100): ORA-01403: no data found SQLERRM(10): -10: non-oracle exception SQLERRM: ORA-000: normal, successful completion SQLERRM(-1): ORA-00001: unique constraint(.) violated SQLERRM(-54): ORA-00054: resource busy and acquire with NOWAIT specified PL/SQL procedure successfully completed 12
13 Zazwyczaj bardziej użytecznym sposobem zastosowania funkcji SQLERRM niż z przekazywanym parametrem (jak np. za pomocą funkcji SQLCODE) jest zastosowanie jej bez parametrów. Taka wersja zwraca pełny komunikat o błędzie z zastąpionymi wszystkimi ciągami znaków, np. nazwę ograniczenia w przypadku błędu ORA-1 w poprzednim przykładzie. Zastosowanie funkcji RAISE_APPLICATION_ERROR W celu tworzenia własnych komunikatów o błędzie można stosować wbudowaną funkcję RAISE_APPLICATION_ERROR. Własne komunikaty mogą być bardziej opisowe niż nazwane wyjątki. Błędy zdefiniowane przez użytkownika są przekazywane do środowiska wywołującego w ten sam sposób, w jaki przekazywane są błędy Oracle. Składnia funkcji RAISE_APPLICATION_ERROR jest następująca: RAISE_APPLICATION_ERROR(numer_bledu, komunikat_o_bledzie, [zachowanie_bledow]); gdzie numer_bledu jest parametrem o wartości z przedziału od do , komunikat_o_bledzie jest tekstem skojarzonym z tym błędem długość parametru komunikat_o_bledzie nie może przekraczać 512 znaków. zachowanie_bledow jest parametrem logicznym (wartość bolowska) parametr logiczny zachowanie_bledow jest opcjonalny. Jeżeli parametr zachowanie_bledow przyjmuje wartość TRUE, wtedy do listy już zgłoszonych błędów jest dodawany nowy błąd (o ile taka lista już istnieje). Jeżeli parametr zachowanie_bledow przyjmuje wartość FALSE, nowy błąd zastąpi bieżącą listę błędów (ustawienie domyślne). Kolejnym istotnym faktem, o którym należy pamiętać, jest to, iż błędy są zgłaszane z wewnątrz programu. Aby zgłosić błąd z wewnątrz programu w języku PL/SQL, należy użyć wbudowanej funkcji o nazwie RAISE_APPLICATION_ERROR. Wymaga ona podania dwóch argumentów. Jeden to numer błędu, który musi się mieścić się w przedziale od do Drugi argument to komunikat o błędzie, który ma zobaczyć użytkownik. Poniżej został podany przykład umieszczonej w programie linii kodu, która zapewnia kierowanie informacji zwrotnych do użytkownika: RAISE_APPLICATION_ERROR (-20123, To jest błąd. Zrobiłeś coś nie tak ); Poniższy fragment kodu przedstawia sytuacje, jak te powyżej wymienione mechanizmy obsługi błędów współpracują w jednym programie: l_liczba_pracownikow NUMBER; i NUMBER; -- to będzie licznik l_wiersz pracownicy%rowtype SELECT * INTO l_wiersz FROM pracownicy ORDER BY nazwisko_pracownika; 13
14 WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR (-20052, Brak danych w tej tabeli. SPRÓBUJ PONOWNIE! ); WHEN others THEN RAISE_APPLICATION_ERROR (-20999, Coś poszło źle. Musisz sam wywnioskować co! ); Przykładowy efekt uruchomienia tego programu może być następujący: declare * BŁĄD w wierszu 2: ORA-20052: Brak danych w tej tabeli. SPRÓBUJ PONOWNIE! ORA-06512: w wierszu 13 Jak wynika z konstrukcji obsługi wyjątków, ten program będzie obsługiwał błędy związane z brakiem danych, a także inne. Znając zasadę działania można zapewnić obsługę różnorodnych problemów pojawiających się w programach. Zaawansowane funkcje obsługi błędów w programach w języku PL/SQL Omówione zostaną teraz sposoby tworzenia własnych wyjątków przez użytkownika. Zostaną również omówione pewne wartości specjalne dostępne podczas wykonywania programu w języku PL/SQL, które mogą być przydatne w przypadku wystąpienia błędów w kodzie programu. Wartości te pomagają usuwać błędy programu, jak również przekazują użytkownikom informacje zwrotne o zaistniałych błędach. Wyjątki definiowane przez użytkownika Gdy program w języku PL/SQL napotka błąd lub niepożądaną sytuację, zgłaszany jest wyjątek. Jak wiemy, system Oracle jest wyposażony w mechanizmy obsługi wyjątków. Jego możliwości można rozszerzyć poprzez zdefiniowanie własnych wyjątków, zwanych wyjątkami definiowanymi przez użytkownika. Wyjątki definiowane przez użytkownika mogą być wywołane w celu obsługi błędu lub podjęcia działań w sytuacji, której system Oracle nie interpretuje jako błąd. Aby wyjątek zdefiniowany przez użytkownika był prawidłowy i właściwie stosowany należy w kodzie programu zdefiniować trzy składniki: deklaracja wyjątku, wywoływanie wyjątku podczas wykonywania programu, program obsługi samego wyjątku. Jest to składnia nieco odmienna niż w przypadku wyjątków dostarczanych przez Oracle, które mogą być używane w programie bez konieczności ich deklarowania czy nawet w przypadkach, gdy nie istniał błąd. Poniżej w przykładowym programie zaprezentowano sposób łączenia się tych trzech składników w programie: l_licznik l_nazwa NUMER:=0; pracownik.nazwisko_pracownika%type; 14
15 CURSOR pobierz_nazwisko_pracownika IS SELECT nazwisko_pracownika FROM pracownicy; wyj_stary_przyjaciel ; wyj_nie_znam_czlowieka ; OPEN pobierz_nazwisko_pracownika; FETCH pobierz_nazwisko_pracownika INTO l_nazwisko; IF l_nazwisko= Jan Kowalski THEN RAISE wyj_stary_przyjaciel; ELSE RAISE wyj_nie_znam_czlowieka; CLOSE pobierz_nazwisko_pracownika; WHEN wyj_stary_przyjaciel THEN DBMS_OUTPUT.PUT_LINE( Znam ta osobę ); WHEN wyj_nie_znam_czlowieka THEN DBMS_OUTPUT.PUT_LINE( Nie znam tej osoby ); / Jak widać na podstawie tego programu, definicja i zastosowanie wyjątku definiowanego przez użytkownika zależy od jego konkretnych potrzeb. Dla celów omawianego przykładu wybrano dane z tabeli pracownicy i utworzono wyjątek dotyczący interesującego w danej sytuacji zagadnienia. Aby korzystanie z tego wyjątku było możliwe, należy zrealizować trzy zadania. 1. Pierwsze z nich to zadeklarowanie wyjątku. W tym celu należy umieścić jego nazwę w sekcji deklaracji programu: wyj_stary_przyjaciel ; wyj_nie_znam_czlowieka ; 2. Drugie wyjątek musi zostać wywołany w kodzie programu w momencie, gdy wystąpią określone warunki. W omawianym przypadku jest to pobranie nazwiska znajomego lub obcej osoby. Aby wywołać wyjątek w kodzie programu, należy po prostu użyć komendy RAISE wraz z nazwą wyjątku: RAISE wyj_stary_przyjaciel; Jak dotąd zdefiniowano, iż użytkownik zamierza zastosować wyjątek (sekcja deklaracji) i chce go użyć w konkretnym momencie (sekcja wykonania). 3. Trzeba jeszcze określić, jakie działanie wyjątek będzie wykonywał. Służy do tego sekcja obsługi wyjątków w programie. W tym przypadku działanie będzie polegało na zasygnalizowaniu, że osoba jest znana użytkownikowi: 15
16 WHEN wyj_stary_przyjaciel THEN DBMS_OUTPUT.PUT_LINE( Znam ta osobę ); W powyższym przykładzie pokazano, jak tworzyć wyjątki definiowane przez użytkownika i jak z nich korzystać. Zakres i kontekst stosowania wyjątków zależy wyłącznie od potrzeb użytkownika. Zmienne przeznaczone do obsługi błędów dostępne w oprogramowaniu Oracle Oprócz możliwości definiowania własnych wyjątków w programie PL/SQL użytkownik może również korzystać z pewnych istotnych zmiennych systemu Oracle przeznaczonych do obsługi błędów. Zmienne te, zwane pseudokolumnami, są dostępne w różnych formach, zależnie od miejsca w programie. Pseudokolumna może być użyta w instrukcji SELECT lub podczas przetwarzania danych. Poniżej zostanie zaprezentowanych klika przykładów pseudokolumn: dane systemowe (SYSDATA); numer wiersza (ROWNUM); numer błędu Oracle (SQLCODE); komunikat o błędzie (SQLERRM). Ostatnie dwie wartości (są one najczęściej wykorzystywane w obsłudze błędów) zapewniają dostęp do numerów błędów i komunikatów o błędach systemu Oracle, umożliwiając w ten sposób tworzenie programów kończących się zawsze pomyślnie, nawet w przypadku wystąpienia błędu. Do poprzednio omawianego przykładu programu tym razem zostanie dodany kolejny mechanizm obsługi wyjątków, który będzie uaktywniany w przypadku wystąpienia określonych błędów. Posłuży do tego wyjątek WHEN OTHERS: l_licznik NUMER:=0; l_nazwa pracownik.nazwisko_pracownika%type; CURSOR pobierz_nazwisko_pracownika IS SELECT nazwisko_pracownika FROM pracownicy; wyj_stary_przyjaciel ; wyj_nie_znam_czlowieka ; OPEN pobierz_nazwisko_pracownika; FETCH pobierz_nazwisko_pracownika INTO l_nazwisko; IF l_nazwisko= Jan Kowalski THEN RAISE wyj_stary_przyjaciel; ELSE RAISE wyj_nie_znam_czlowieka; CLOSE pobierz_nazwisko_pracownika; 16
17 WHEN wyj_stary_przyjaciel THEN DBMS_OUTPUT.PUT_LINE( Znam ta osobę ); WHEN wyj_nie_znam_czlowieka THEN DBMS_OUTPUT.PUT_LINE( Nie znam tej osoby ); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE( Mamy problem Numer SQLCODE); DBMS_OUTPUT.PUT_LINE( Treść komunikatu: SQLERRM); Wyjątek WHEN OTHERS może być wykorzystywany do obsługi wszelkich pojawiających się błędów, dla których nie zdefiniowano innych wyjątków. Musi to być również ostatni wyjątek umieszczony w sekcji obsługi wyjątków, ponieważ system Oracle kończy przetwarzanie danych po napotkaniu wyjątku spełniającego kryteria określone w tym wyjątku. Jeśli więc wyjątek WHEN OTHERS zostanie umieszczony na pierwszym miejscu, dalsze wyjątki w ogóle nie będą przetwarzane. W omawianym powyżej przykładzie użyto pseudokolumn SQLCODE i SQLERRM. Ich umieszczenie w programach tworzonych w języku PL/SQL zapewnia, że podczas wykonywania kodu nie nastąpi błędne zakończenie programu. Inna stosowana metoda może polegać na umieszczeniu tych wartości w zmiennych, są zwracane do programu wywołującego. Propagacja wyjątków Wyjątki mogą występować w sekcji deklaracji, wykonania lub wyjątków bloku PL/SQL. Do tej pory na wykładzie zostały przeanalizowane zdarzenia, jakie zachodzą w chwili zgłaszania wyjątków w sekcji wykonania bloku. Teraz zajmiemy się przypadkiem, gdy nie został zaprojektowany program obsługi wyjątków lub gdy wyjątek jest wywoływany z innej sekcji bloku niż sekcja wykonania bloku. Proces zachodzący w takich przypadkach jest nazywany propagacją wyjątków. Wyjątki wywoływane w sekcji wykonania. W przypadku zgłaszania wyjątku w sekcji wykonania bloku mechanizm PL/SQL wykorzystuje poniższy algorytm w celu określenia potrzebnego programu obsługi wyjątków. 1. Jeżeli bieżący blok posiada program obsługi wyjątku, należy go wykonać i zakończyć pomyślnie proces wykonywania bloku. Następnie sterowanie jest przekazywane do bloku obejmującego. 2. Jeżeli nie istnieje program obsługi dla bieżącego wyjątku, to należy propagować wyjątek przez wywołanie go w bloku obejmującym. Następnie dla bloku obejmującego należy wykonać czynności opisane w punkcie 1. Gdy nie ma bloku obejmującego, wówczas sterowanie zostanie przekazane do środowiska wywołującego, np. program SQL*Plus. Przed dokładnym wykonaniem powyższego algorytmu, który zapewni nam obsługę wyjątku zgłaszanego w sekcji wykonania, konieczne jest zdefiniowanie bloku obejmującego. Blok może być osadzony wewnątrz 17
18 drugiego i w takim przypadku blok zewnętrzny obejmuje blok wewnętrzny. Poniższy przykład ilustruje tego typu sytuację: -- Rozpoczęcie wykonywania bloku zewnętrznego Rozpoczęcie wykonywania wewnętrznego bloku 1. Jest to blok osadzony w bloku zewnętrznym Rozpoczęcie wykonywania wewnętrznego bloku 2. Jest to również blok osadzony w bloku -- zewnętrznym. Należy zwrócić uwagę, że blok ten nie posiada sekcji deklaracji Zakończenie bloku zewnętrznego W powyższym przykładzie oba wewnętrzne bloki 1 i 2 są objęte przez blok zewnętrzny. Każdy nieobsłużony wyjątek wywołany w bloku 1 i 2 będzie propagowany do bloku zewnętrznego. Wywołanie procedury również tworzy blok obejmujący. Tego typu sytuację ilustruje poniższy przykład: -- Rozpoczęcie wykonywania bloku zewnętrznego -- Wywołanie procedury. Procedura będzie objęta przez ten blok zewnętrzny F(...); WHEN OTHERS THEN Wyjątki zgłaszane przez procedurę F będą przechwycone w tym miejscu Jeżeli procedura F zgłasza nieobsługiwany wyjątek, będzie on propagowany do bloku zewnętrznego, ponieważ blok ten obejmuje procedurę. Zajmiemy się obecnie omówieniem poszczególnych przypadków algorytmu propagacji wyjątków, co zostanie zilustrowane za pomocą trzech poniższych przykładów. 18
19 Pierwszy przykład propagacji Przykład ten ilustruje zastosowanie reguły 1. z algorytmu propagacji wyjątków. Wyjątek A jest zgłaszany i obsługiwany w podbloku, następnie sterowanie powraca do bloku zewnętrznego. A Wyjątek A jest wywołany w podbloku. RAISE A; WHEN A THEN Wyjątek A jest również obsługiwany w podbloku. Tutaj jest wznawiane sterowanie 19
20 Drugi przykład propagacji Dla podbloku zastosowano 2. regułę z algorytmu obsługi wyjątków. Wyjątek jest propagowany do bloku obejmującego, gdzie jest stosowana 1. reguła. W ten sposób wykonywanie bloku obejmującego kończy się pomyślnie. A ; B ; Wyjątek B jest wywołany w podbloku. RAISE B; WHEN A THEN WHEN B THEN W podbloku nie ma żadnego programu obsługi dla wyjątku B. Wyjątek B jest propagowany do bloku obejmującego i tam jest obsługiwany. Następne sterowanie jest przekazywane na zewnątrz bloku obejmującego, którego wywołanie kończy się pomyślnie. Trzeci przykład propagacji Dla podbloku stosuję się 2. reguły z algorytmu obsługi wyjątków. Wyjątek jest propagowany do bloku obejmującego, gdzie w dalszym ciągu nie istnieje program obsługi odpowiedni dla tego wyjątku. Ponownie jest stosowana 2. reguła z algorytmu obsługi wyjątków. W ten spo-sób wykonywanie bloku obejmującego kończy się niepomyślnie, z nieobsłużonym wyjątkiem. 20
DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];
Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/
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
Bardziej szczegółowoJę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.
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 Komunikaty o błędach serwera Oracle Wykonanie niepoprawnej operacji w trakcie działania
Bardziej szczegółowo1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...
Plan wykładu Spis treści 1 Kursory 1 2 Wyjątki 4 2.1 Wyjątki predefiniowane............................. 4 2.2 Wyjątki niezdefiniowane wcześniej....................... 5 2.3 Definiowanie własnych wyjątków........................
Bardziej szczegółowoProcedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu
Procedury składowane Kolejnym typem programu języka PL/SQL są procedury składowane. Procedury mogą posiadać parametry typu IN, OUT lub IN OUT. Umożliwiają wykonanie operacji na danych w bazie, mogą też
Bardziej szczegółowoKursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1
Kursory i wyjątki Kursory i praca z kursorami, kursory jawne i niejawne, otwieranie kursora, pobieranie z kursora, zamykanie kursora, wyjątki systemowe i użytkownika, zgłaszanie i obsługa wyjątków 1 Kursor
Bardziej szczegółowoDeklarowanie kursora
Kursory i wyjątki Kursory i praca z kursorami, kursory jawne i niejawne, otwieranie kursora, pobieranie z kursora, zamykanie kursora, wyjątki systemowe i użytkownika, zgłaszanie i obsługa wyjątków 1 Kursor
Bardziej szczegółowoDeklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;
Kursory Każde zapytanie SQL umieszczone w programie PLSQL jest wykonywane w tzw. obszarze roboczym lub inaczej obszarze kontekstu. PLSQL wykorzystuje ten obszar do przechowywania danych otrzymanych w wyniku
Bardziej szczegółowoBAZY DANYCH W APLIKACJACH SIECIOWYCH
BAZY DANYCH W APLIKACJACH SIECIOWYCH Wykład 4 Wyjątki. Wyzwalacze bazodanowe. (Wybrane materiały) Dr inż. E. Busłowska Obsługa wyjątków w PLSQL Wyjątek (ang. Exception) - błąd lub ostrzeżenie w PLSQL Typy
Bardziej szczegółowoPakiety podprogramów Dynamiczny SQL
Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL 1 Pakiety Pakiet (ang. package)
Bardziej szczegółowo15. Funkcje i procedury składowane PL/SQL
15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp
Bardziej szczegółowoPlan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL
Plan wykładu Uzupełnienie projektu fizycznego Czym jest PL/SQL Bloki w PL/SQL Zmienne i stałe Instrukcje sterujące Wykorzystanie SQL w PL/SQL Kursory Wyjątki Projekt fizyczny bazy danych Braki projektu
Bardziej szczegółowoPL/SQL. Zaawansowane tematy PL/SQL
PL/SQL Zaawansowane tematy PL/SQL Cele Poznanie złożonych i referencyjnych typów danych Poznanie konstrukcji kursora Poznanie kodu składowanego Poznanie procedur i funkcji 2 Złożone typy danych RECORD
Bardziej szczegółowoPaździernik 2015. Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.
1/40 Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Październik 2015 2/40 Plan wykładu Uzupełnienie projektu fizycznego Czym jest PL/SQL Bloki w PL/SQL Wykorzystanie 3/40 Projekt
Bardziej szczegółowoBazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)
Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dwunasty PL/SQL, c.d. 1 / 37 SQL to za mało SQL brakuje możliwości dostępnych w językach proceduralnych.
Bardziej szczegółowoDECLARE VARIABLE zmienna1 typ danych; BEGIN
Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;
Bardziej szczegółowoMateriały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne
Materiały dostępne są na stronie: Materiały Technologie baz danych aragorn.pb.bialystok.pl/~gkret Wykład 5: Kursory jawne. Podprogramy. Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka
Bardziej szczegółowoTechnologie baz danych WYKŁAD 7: Wyjątki
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
Bardziej szczegółowoJęzyk PL/SQL Pakiety podprogramów
Język PL/SQL Pakiety podprogramów Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora) 1 Pakiety Pakiet (ang. package) grupuje powiązane
Bardziej szczegółowoJęzyk PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL
Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL.
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?
Bardziej szczegółowoInstrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.
SQL W JĘZYKU PL/SQL Strukturalny język zapytań SQL określa sposób manipulowania danymi w bazie danych. Konstrukcje proceduralne języka PL/SQL stają się bardziej użyteczne w połączeniu z mocą przetwarzania
Bardziej szczegółowoBloki anonimowe w PL/SQL
Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia
Bardziej szczegółowoDelphi Laboratorium 3
Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,
Bardziej szczegółowoPakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.
Pakiety Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiet składa się ze: specyfikacji (interfejsu) i ciała (implementacji). W specyfikacji mieszczą
Bardziej szczegółowoRozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
Bardziej szczegółowoJęzyk PL/SQL. Rozdział 2. Kursory
Język PL/SQL. Rozdział 2. Kursory Deklarowanie kursora, otwieranie kursora, pobieranie z kursora, zamykanie kursora, zmienne kursorowe, wyrażenie CURSOR, kursory niejawne. 1 Kursor jawny Każde zapytanie
Bardziej szczegółowow PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze
w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze Cechy bloków nazwanych: w postaci skompilowanej trwale przechowywane na serwerze wraz z danymi wykonywane na żądanie użytkownika lub w
Bardziej szczegółowoKursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)
Kursor jawny Każde zapytanie SQL umieszczone w programie PL/SQL może zwrócić zero, jedną bądź wiele krotek. Aby efektywnie przetworzyć krotkizwrócone przez zapytanie korzystamy z kursorów. Kursor jest
Bardziej szczegółowoPlan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów
Plan wykładu Kursory: deklaracja, otwieranie, pobieranie danych, zamykanie Kursory: atrybuty Kursory: pętle, rekordy Kursory z parametrami BAZY DANYCH II WYKŁAD 4 dr inż. Agnieszka Bołtuć Co to jest kursor?
Bardziej szczegółowoPODSTAWY BAZ DANYCH 13. PL/SQL
PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących
Bardziej szczegółowoFunkcje 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
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 będziemy używać w taki sam sposób, jak wbudowanych funkcji
Bardziej szczegółowoOracle Developer Suite. Budowa aplikacji użytkownika końcowego
Oracle Developer Suite Budowa aplikacji użytkownika końcowego Składniki pakietu Oracle Developer Suite Oracle Forms Builder formularze (aplikacje dostępne z poziomu przeglądarki internetowej, model 3-warstwowy)
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Wprowadzenie Tworzenie i wykonywanie procedur i funkcji Instrukcja RETURN Parametry procedur i funkcji oraz ich przesyłanie Metadane
Bardziej szczegółowoE.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze
Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie
Bardziej szczegółowoKursory - pobieranie danych z baz danych do programów PL/SQL
Kursory - pobieranie danych z baz danych do programów PL/SQL Rozważania będą dotyczyć sposobów pobierania danych z baz danych do programów przechowywanych w pamięci. Interakcja języka PL/SQL z językiem
Bardziej szczegółowoWyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.
Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,
Bardziej szczegółowoProcedury i funkcje składowane
Procedury i funkcje składowane Zmienne podstawienia i zmienne wiązane, podprogramy, procedury składowane, typy argumentów, wywoływanie procedur, funkcje składowane, poziomy czystości funkcji, funkcje tablicowe
Bardziej szczegółowoInstrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada
Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe
Bardziej szczegółowoORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład
ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko Typy rozproszonych baz Systemy typu klient-serwer (jeden serwer) Jednorodna rozproszona baza (kilka serwerow, jeden system zarzadzania baza ) Niejednorodna
Bardziej szczegółowoPL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń
PL/SQL Zaawansowane tematy PL/SQL Piotr Medoń Cele Omówienie transakcji bazodanowych Omówienie obsługi wyjątków Zarządzanie perspektywami Tworzenie i usuwanie sekwencji Budowa wyzwalaczy 2 Transakcje bazodanowe
Bardziej szczegółowo41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)
Elementy języka T-SQL 40. Polecenie PRINT jest wykorzystywane do przekazania wiadomości tekstowej (maksymalna długość 8000 znaków) Przykład PRINT 'Aktualna data: '+convert(char(8),getdate()) PRINT 'Aktualny
Bardziej szczegółowoSystemy baz danych 2 laboratorium Projekt zaliczeniowy
Dany jest następujący logiczny schemat bazy danych Systemy baz danych 2 laboratorium Projekt zaliczeniowy FAKTURY POZYCJE PK f_id_faktury PK p_id_pozycji f_data_wystawienia f_data_płatnosci f_czy_zaplacona
Bardziej szczegółowoWyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz
Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych
Bardziej szczegółowoWyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia
Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie
Bardziej szczegółowoKursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora
Kursor Rozdział 10a Kursory Kursory i praca z kursorami, kursory jawne i niejawne, otwieranie kursora, pobieranie z kursora, zamykanie kursora, zmienne kursorowe, wyrażenie CURSOR Każde zapytanie SQL umieszczone
Bardziej szczegółowoProgramowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,
Programowanie w SQL definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE, kontynuacja działania od instrukcji za podaną etykietą GOTO etykieta, wyjście bezwarunkowe
Bardziej szczegółowoJęzyk PL/SQL Procedury i funkcje składowane
Język PL/SQL Procedury i funkcje składowane Podprogramy, procedury i funkcje składowane, typy argumentów, wywoływanie procedur i funkcji, poziomy czystości funkcji 1 Podprogramy Procedury (wykonują określone
Bardziej szczegółowoPlan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza
4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza
Bardziej szczegółowoKOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów
KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw
Bardziej szczegółowoOracle11g: Programowanie w PL/SQL
Oracle11g: Programowanie w PL/SQL OPIS: Kurs pozwala zrozumieć zalety programowania w języku PL/SQL. Studenci uczą się tworzyć bloki kodu wykonywanego po stronie serwera, który może być współużytkowany
Bardziej szczegółowoPL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń
PL/SQL Część 1 Bloki PL/SQL Piotr Medoń Cele Zapoznanie się z podstawowymi typami PL/SQL Zapoznanie się z blokiem PL/SQL Zapoznanie się z instrukcjami sterującymi wykonaniem 2 Blok PL/SQL Struktura bloku
Bardziej szczegółowoLaboratorium nr 4. Temat: SQL część II. Polecenia DML
Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze
Bardziej szczegółowoWykład 8. SQL praca z tabelami 5
Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu
Bardziej szczegółowoOpis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].
ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości
Bardziej szczegółowoProgramowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków
Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................
Bardziej szczegółowoCheatsheet PL/SQL Andrzej Klusiewicz 1/9
Declare y integer; z varchar2(50); d date; null; Declare x integer:=10; null; x integer; x:=10; dbms_output.put_line('hello world'); for x in 1..10 loop Deklaracja 4 zmiennych. Jednej typu rzeczywistego,
Bardziej szczegółowoPlan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH
Plan wykładu 2 TWORZENIE APLIKACJI BAZODANOWYCH Wykład 2: Wprowadzenie do PL/SQL: bloki anonimowe, zmienne, kursory Wprowadzenie do PL/SQL Bloki Podstawowe składowe języka Zmienne i stałe Kursory Małgorzata
Bardziej szczegółowoUwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Bardziej szczegółowoMateriały do laboratorium MS ACCESS BASIC
Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I
Bardziej szczegółowoPętle. Dodał Administrator niedziela, 14 marzec :27
Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać
Bardziej szczegółowoKolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle
Rozszerzenie obiektowe w SZBD Oracle Cześć 2. Kolekcje Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Malinowski Nowak Kowalski tablica zagnieżdżona (ang.
Bardziej szczegółowoTypy, klasy typów, składnie w funkcji
Typy, klasy typów, składnie w funkcji Typy w Haskell Każde wyrażenie w Haskell posiada zdefiniowany typ. Dzięki temu już na etapie kompilacji kodu następuje sprawdzenie poprawności kodu i zabezpiecza nas
Bardziej szczegółowoUniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania
Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą
Bardziej szczegółowoBloki anonimowe w PL/SQL
Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia
Bardziej szczegółowoPlan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych
Plan wykładu BAZY DANYCH II WYKŁAD 3 Zasięg zmiennych Zmienne powiązane Instrukcje warunkowe Pętle Pobieranie danych SQL w PL/SQL Rekordy dr inż. Agnieszka Bołtuć Zasięg zmiennych Zmienna jest dostępna
Bardziej szczegółowoObiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
Bardziej szczegółowoWyzwalacze. Anna Fiedorowicz Bazy danych 2
Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych
Bardziej szczegółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoKowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592. Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami
Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592 Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Spis treści Założenia Projektowe...1 Schemat Bazy Danych...1
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 7 Dynamiczny SQL i PL/SQL Pierwotny dynamiczny SQL Pierwotny dynamiczny DDL Pierwotny dynamiczny DML i SELECT Pakiet DBMS_SQL Transakcje
Bardziej szczegółowoProcedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1
Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane
Bardziej szczegółowoWyzwalacze (triggery) Przykład
Wyzwalacze (triggery) Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę, a następnie trigger związany
Bardziej szczegółowoWykład 9. Pakiety w języku PL/SQL
Wykład 9. Pakiety w języku PL/SQL Pakiety (ang. packages): podobnie jak podprogramy, zaliczamy do bloków nazwanych języka PL/SQL, zostały zaczerpnięty z języka ADA, lecz w stosunku do pakietu tego języka
Bardziej szczegółowoTablice (jedno i wielowymiarowe), łańcuchy znaków
Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie
Bardziej szczegółowoPrzykładowa baza danych BIBLIOTEKA
Przykładowa baza danych BIBLIOTEKA 1. Opis problemu W ramach zajęć zostanie przedstawiony przykład prezentujący prosty system biblioteczny. System zawiera informację o czytelnikach oraz książkach dostępnych
Bardziej szczegółowoBlaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik
Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie
Bardziej szczegółowoLibreOffice Calc VBA
LibreOffice Calc VBA LibreOffice Calc umożliwia tworzenie własnych funkcji i procedur przy użyciu składni języka VBA. Dostęp do edytora makr: Narzędzia->Makra->Zarządaj makrami->libreoffice Calc Aby rozpocząć
Bardziej szczegółowoSystemy GIS Tworzenie zapytań w bazach danych
Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE
Bardziej szczegółowoObowiązuje od wersji
Obowiązuje od wersji 8.30.0 1. Wstęp czym są gniazda rozszerzeń?... 2 2. Edytor gniazd rozszerzeń - informacje podstawowe... 3 3. Dostępne rodzaje funkcji w gniazdach rozszerzeń... 6 3.1 Procedura SQL...
Bardziej szczegółowoTworzenie raportów XML Publisher przy użyciu Data Templates
Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia
Bardziej szczegółowoPlan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku
Plan wykładu BAZY DANYCH II WYKŁAD 2 Bloki, struktura, sekcje Bloki anonimowe Tworzenie i uruchamianie Identyfikatory Literały Typy danych dr inż. Agnieszka Bołtuć Bloki Struktura bloku W programach pisanych
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoWyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196
Wyjątki 180 / 196 Wyjątki W Javie istnieje mechanizm tzw. wyjątków (ang. exception), który pozwala na przechwytywanie błędów pojawiających się w programie. Kompilacja tab [ 1 0 ] = 100; spowoduje powstanie
Bardziej szczegółowoTrigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.
Temat: Wyzwalacze (triggery). Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę a następnie trigger
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW
ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW Położenie podprogramów Jak wiemy, podprogramy i pakiety jako bloki nazwane, mogą być składowane w słowniku danych. Podprogram najpierw tworzy się za pomocą polecenia
Bardziej szczegółowoWykład 5. SQL praca z tabelami 2
Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,
Bardziej szczegółowoPlan wykładu BAZY DANYCH II WYKŁAD 5. Kolekcje. Tablice asocjacyjne Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone
Plan wykładu Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone BAZY DANYCH II WYKŁAD 5 dr inż. Agnieszka Bołtuć Kolekcje Tablice asocjacyjne Używane w celu gromadzenia danych tego samego typu, Rekordy
Bardziej szczegółowoSkładowane procedury i funkcje
Składowane procedury i funkcje Procedury i funkcje są zestawem poleceń SQL, które są przechowywane na serwerze (tak jak dane w tablicach). Istnieją sytuacje, kiedy procedury i funkcje są szczególnie przydatne.
Bardziej szczegółowoPrzykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;
Temat: Funkcje, procedury i wyzwalacze. Oprócz tabel i widoków w bazach danych możemy tworzyć własne funkcje, procedury i specjalny typ procedur, które będą automatycznie wywoływanie przez MySQL w memencie
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Bardziej szczegółowoD D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?
D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się
Bardziej szczegółowoCREATE USER
Temat: Administrowanie użytkownikami bazy danych. Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest możliwość
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -
Bardziej szczegółowoOgranicz listę klasyfikacji budżetowych do powiązanych z danym kontem księgowym
Zależności i kontrola danych budżetowych w systemie Sz@rk FK 1. Wstęp Począwszy od wersji Sz@rk FK 2011 (11.03.30) wprowadzono do programu finansowoksięgowego nowe możliwości dotyczące kontrolowania poprawności
Bardziej szczegółowoUzupełnij pola tabeli zgodnie z przykładem poniżej,
1. Wykonaj bazę danych biblioteki szkolnej, Otwórz MS Access a następnie z menu plik wybierz przycisk nowy, w oknie nowy plik wybieramy pusta baza danych nadaj jej nazwę Biblioteka i wybierz miejsce w
Bardziej szczegółowoBazy danych 6. Klucze obce. P. F. Góra
Bazy danych 6. Klucze obce P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób ten (żargonowo:
Bardziej szczegółowoPL/SQL. Lidia Małkiewicz i Cezary Skubała
PL/SQL Lidia Małkiewicz i Cezary Skubała Jest językiem trzeciej generacji (3GL), który udostępnia konstrukty programistyczne, włączając w to deklaracje zmiennych, pętlę, obsługę błędów itd. Obecnie PL/SQL
Bardziej szczegółowokoledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,
Celem ćwiczeń jest zaprojektowanie oraz utworzenie na serwerze bazy danych przechowującej informacje na temat danych kontaktowych. Celem jest również zapoznanie z podstawowymi zapytaniami języka SQL służącymi
Bardziej szczegółowo