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

Wielkość: px
Rozpocząć pokaz od strony:

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

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 typ [( )] [ NOT NULL ] [ { := DEFAULT } ];

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ółowo

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

Oracle 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ółowo

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

Deklarowanie 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ółowo

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

Plan 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ółowo

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

Paź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ółowo

15. Funkcje i procedury składowane PL/SQL

15. 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ółowo

Bazy 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 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ółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE 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ółowo

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

Instrukcje 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ółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 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ółowo

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

w 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ółowo

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

Oracle 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ółowo

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

Kursory - 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ółowo

Delphi Laboratorium 3

Delphi 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ółowo

ORACLE (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 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ółowo

Programowanie 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, 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ółowo

Wyzwalacz - 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 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ółowo

Wyją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. 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ółowo

Systemy baz danych 2 laboratorium Projekt zaliczeniowy

Systemy 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ółowo

Oracle11g: Programowanie w PL/SQL

Oracle11g: 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ółowo

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

KOLEKCJE - 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ółowo

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

Uwagi 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ółowo

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

Plan 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ółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy 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ółowo

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Laboratorium 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ółowo

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

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 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ółowo

Materiały do laboratorium MS ACCESS BASIC

Materiał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ółowo

Bloki anonimowe w PL/SQL

Bloki 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ółowo

1 Podstawy c++ w pigułce.

1 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ółowo

Uzupełnij pola tabeli zgodnie z przykładem poniżej,

Uzupeł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ółowo

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

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

Bardziej szczegółowo

ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW

ZASTOSOWANIE 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ółowo

Oracle10g: Programowanie w PL/SQL

Oracle10g: Programowanie w PL/SQL Oracle10g: Programowanie w PL/SQL OPIS: Szkolenie dotyczy użytkowników Oracle8i, Oracle9i i Oracle10g. Ten kurs pozwala zrozumieć zalety tego potężnego narzędzia programowania do PL/SQL. Studenci uczą

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy 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ółowo

D 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 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ółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Podprogramy Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I Procedury do przeprowadzenia akcji Funkcje do obliczania wartości Pakiety do zbierania logicznie

Bardziej szczegółowo

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia). POZIOMY IZOLACJI TRANSAKCJI 1. Microsoft SQL Server 2012 (od SQL Server 2005) W systemie SQL Server można wybrać sposób sterowania współbieżnością. Podstawowy sposób to stosowanie blokad. Wykorzystywane

Bardziej szczegółowo

Procedury Funkcje Pakiety. Tworzenie procedury

Procedury Funkcje Pakiety. Tworzenie procedury Podprogramy tworzy się za pomocą instrukcji CREATE. Tworzenie procedury Składnia CREATE [OR REPLACE] PROCEDURE nazwa_procedury [(param1 [IN OUT IN OUT] typ_danych [:= DEFAULT wyrażenie], param2 [IN OUT

Bardziej szczegółowo

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

Tworzenie 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ółowo

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

Bardziej szczegółowo

Imię i Nazwisko Data Ocena. Laboratorium 7

Imię i Nazwisko Data Ocena. Laboratorium 7 Imię i Nazwisko Data Ocena Laboratorium 7 Celem tego ćwiczenia jest pokazanie, że w MoscowML można pisać aplikacje użytkowe, np. prosty interpreter języka SQL (MLSQL) Listy i krotki Różnica pomiędzy krotkami

Bardziej szczegółowo

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

Oracle 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 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

Bardziej szczegółowo

Microsoft SQL Server Podstawy T-SQL

Microsoft SQL Server Podstawy T-SQL Itzik Ben-Gan Microsoft SQL Server Podstawy T-SQL 2012 przełożył Leszek Biolik APN Promise, Warszawa 2012 Spis treści Przedmowa.... xiii Wprowadzenie... xv Podziękowania... xix 1 Podstawy zapytań i programowania

Bardziej szczegółowo

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk Wstęp wprowadzający do laboratorium 2 mgr inż. Rafał Grycuk Plan prezentacji 1. Czym jest T-SQL i czym się różni od standardu SQL 2. Typy zapytań 3. Zapytanie typu SELECT 4. Słowo o indeksach T-SQL (1)

Bardziej szczegółowo

SYSTEM INFORMATYCZNY KS-SEW

SYSTEM INFORMATYCZNY KS-SEW DOKUMENTACJA TECHNICZNA KAMSOFT S.A. 40-235 Katowice ul. 1-Maja 133 Tel. (032) 2090705, Fax. (032) 2090715 http:www.kamsoft.pl, e-mail: 5420@kamsoft.pl SYSTEM INFORMATYCZNY NR KATALOGOWY 2334PI06.00 WYDANIE

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 3 Podstawy programowania w T-SQL Zmienne i operatory Instrukcje sterujące Komunikaty Format daty

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

Smarty PHP. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK

Bardziej szczegółowo

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projekt Hurtownia, realizacja rejestracji dostaw produktów Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące

Bardziej szczegółowo

SQL (ang. Structured Query Language)

SQL (ang. Structured Query Language) SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność

Bardziej szczegółowo

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

Bardziej szczegółowo

Wyzwalacze TWORZENIE WYZWALACZY

Wyzwalacze TWORZENIE WYZWALACZY Wyzwalacze: podobnie jak procedury i funkcje, są nazwanymi blokami PL/SQL zawierającymi sekcje deklaracji, wykonania i obsługi wyjątków; nie akceptują argumentów; muszą być składowane jako samodzielne

Bardziej szczegółowo

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL PL/SQL Zaawansowane tematy PL/SQL Cele Przypomnienie kursorów Przypomnienie procedur i funkcji składowanych Poznanie pakietów składowanych 2 Bazę danych Oracle możemy traktować jakby była złożona z dwóch

Bardziej szczegółowo

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

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE Instrukcje SQL dzielimy na następujące kategorie: 1) Instrukcje języka manipulowania danymi (DML) SELECT, INSERT, UPDATE, DELETE, SET TRANSACTION, EXPLAIN PLAN 2) Instrukcje języka definicji danych DDL

Bardziej szczegółowo

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus Podstawy języka SQL Co to jest SQL? Structured Query Language uchodzi za standard języka zapytań kierowanych do systemu zarządzania bazą danych. SQL jest językiem deklaratywnym tj. takim, w którym istotne

Bardziej szczegółowo

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście. Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN

Bardziej szczegółowo

Efekty uboczne błędów

Efekty uboczne błędów Obsługa wyjątków Efekty uboczne błędów Fragment kodu programu jest bezpieczny (ang. exception-safe) jeżeli błędy, które wystąpią w trakcie przetwarzania tego kodu nie będą powodowały niepożądanych efektów

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca

Bardziej szczegółowo

BAZY DANYCH Cz III. Transakcje, Triggery

BAZY DANYCH Cz III. Transakcje, Triggery BAZY DANYCH Cz III Transakcje, Triggery Transakcje Definicja: Zbiór operacji (modyfikacja danych, usuwanie, wstawianie, tworzenie obiektów bazodanowych), które albo wszystkie kończone są sukcesem, albo

Bardziej szczegółowo

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

Ogranicz 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ółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

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

Plan wykładu BAZY DANYCH II WYKŁAD 6. Co to są wyjątki? Co to są wyjątki? 2010-12-02 Plan wykładu Wyjątki Deklarowanie, zgłaszanie, obsługa wyjątków Przekazywanie wyjątków Funkcje Procedury BAZY DANYCH II WYKŁAD 6 dr inż. Agnieszka Bołtuć Co to są wyjątki? Co to są wyjątki? Wyjątki są

Bardziej szczegółowo

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegółowo

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

Oracle 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 1 Wprowadzenie Dostęp do bazy danych Program SQL*Plus Podstawy PL/SQL - 2 - Wprowadzenie Dlaczego warto uczyć się o Oracle u? Oracle

Bardziej szczegółowo

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

Bardziej szczegółowo

QUERY język zapytań do tworzenia raportów w AS/400

QUERY język zapytań do tworzenia raportów w AS/400 QUERY język zapytań do tworzenia raportów w AS/400 Dariusz Bober Katedra Informatyki Politechniki Lubelskiej Streszczenie: W artykule przedstawiony został język QUERY, standardowe narzędzie pracy administratora

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

6. Bezpieczeństwo przy współpracy z bazami danych

6. Bezpieczeństwo przy współpracy z bazami danych 6. Bezpieczeństwo przy współpracy z bazami danych 6.1. Idea ataku SQL injection Atak znany jako SQL injection jest możliwy wtedy, gdy użytkownik ma bezpośredni wpływ na postać zapytania wysyłanego do bazy

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

Bardziej szczegółowo

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Język SQL, zajęcia nr 1

Język SQL, zajęcia nr 1 Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Ważne informacje Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I WYKŁAD 1: Wprowadzenie do przedmiotu, proceduralny język SQL 1. Sylabus w USOS ie: Ogólny

Bardziej szczegółowo

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projekt Hurtownia, realizacja rejestracji dostaw produktów Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Podstawy Programowania 2

Podstawy Programowania 2 Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu

Bardziej szczegółowo

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ Wykład 4 Katedra Inżynierii Komputerowej Jakub Romanowski jakub.romanowski@kik.pcz.pl Operacje na tabelach C/AL Poniższe funkcje odpowiadają za operacje modyfikacji

Bardziej szczegółowo

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

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka Sesje, ciasteczka, wyjątki Nie sposób wyobrazić sobie bez nich takich podstawowych zastosowań, jak logowanie użytkowników czy funkcjonowanie koszyka na zakupy. Oprócz tego dowiesz się, czym są wyjątki,

Bardziej szczegółowo

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Mariusz Jankowski autor strony internetowej poświęconej Excelowi i programowaniu w VBA; Bogdan Gilarski właściciel firmy szkoleniowej Perfect And Practical;

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Pakiety i interfejsy. Tomasz Borzyszkowski

Pakiety i interfejsy. Tomasz Borzyszkowski Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji

Bardziej szczegółowo

Cele. Definiowanie wyzwalaczy

Cele. Definiowanie wyzwalaczy WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa

Bardziej szczegółowo

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP Zad. 1 Dla każdego zamówienia wyznaczyć jego wartość. Należy podać numer zamówienia oraz wartość. select z.id_zamowienia, sum(ilosc*cena) as wartosc

Bardziej szczegółowo

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech BAZY DANYCH Obsługa bazy z poziomu języka PHP opracowanie: Michał Lech Plan wykładu 1. PHP - co to jest? 2. Bazy danych obsługiwane przez PHP 3. Podstawowe polecenia 4. Sesje 5. Przykład - dodawanie towaru

Bardziej szczegółowo

Projektowani Systemów Inf.

Projektowani Systemów Inf. Projektowani Systemów Inf. Wykład VII Bezpieczeństwo Copyrights by Arkadiusz Rzucidło 1 Bezpieczeństwo Bezpieczeństwo związane z danymi Konstrukcja magazynów danych Mechanizmy zapisu i modyfikacji danych

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL Obsługa błędów w SQL i transakcje Zacznijmy od najprostszego przykładu: CREATE PROCEDURE podziel1 Obsługa błędów w SQL Powyższa procedura w większości przypadków zadziała prawidłowo, lecz na przykład poniższe

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wyzwalacze Wprowadzenie Tworzenie wyzwalacza Wyzwalacze typu,,po'' Wyzwalacze typu,,zamiast''

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, współpraca PHP z bazami

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 4 Wsady Procedury składowane Procedury składowane tymczasowe, startowe Zmienne tabelowe Funkcje

Bardziej szczegółowo