IBM DB2. Procedury składowane. Opracowanie: Aleksandra Werner

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

Download "IBM DB2. Procedury składowane. Opracowanie: Aleksandra Werner"

Transkrypt

1 IBM DB2 Procedury składowane Opracowanie: Aleksandra Werner

2 Laboratorium Baz Danych. IBM DB2 procedury Spis treci 1 WPROWADZENIE PODSTAWOWA STRUKTURA PROCEDURY Parametry Typy danych Własnoci procedury Otrzymywanie zbioru wynikowego Parametry kontrolne procedury, kontrolujce sposób tworzenia procedury Ciało procedury Rejestry WYKONYWANIE PROCEDUR Dynamiczny SQL ELEMENTY JZYKA SQL PL Sekwencje Instrukcje sterujce Kursory Kursory FOR UPDATE Kursory WITH HOLD Kursory READ ONLY Kursory WITH RETURN Podstawowa obsługa błdów SQLCODE/SQLSTATE Deklaracja warunku i zgłoszenia CONDITION FOR SIGNAL/RESIGNAL GET DIAGNOSTICS Złoony SQL PROCEDURY External Stored Procedures Procedury rejestrowe (registering stored procedures) SQL PSM (ROZSZERZENIA PERSISTENT STORED MODULE) - JZYK SKRYPTOWY DO DEKLARACJI I ZARZDZANIA PROCEDURAMI Kompilacja procedury Etapy wdraania procedur Opcje kompilacji i reoptymalizacji KONCEPCJA NAZYWANIA PROCEDUR UDF

3 1 1 Wprowadzenie Procedury składowane s obiektami aplikacji bazodanowej. Procedury s nazwanymi blokami PL/SQL'a, które mog pobiera parametry i by wykonywane. Rozrónia si dwa typy podprogramów: procedury i funkcje. procedury pozwalaj na enkapsulacj kodu, co poprawia m.in. debugowanie zmiany w schemacie bazy wpływaj na zmian kodu ródłowego tylko w jednym miejscu, co jest raczej zadaniem DBA a nie rewizji całego kodu poniewa procedury składowane rezyduj na serwerze, mona za ich pomoc cilej kontrolowa bezpieczestwo przestrzeni klienta poniewa procedury składowane s kompilowane i przechowywane poza aplikacj, mog uywa takich zmiennych w SQL-u jak: hasła i dane osobowe, których zwykle unika si w skryptach czy zdalnych wywołaniach redukuj ruch w sieci. DB2 pozwala na kodowanie procedur w dowolnym, potrzebnym jzyku. Istniej dwa rodzaje procedur składowanych: 1. procedury SQL 2. procedury zewntrzne - zwykle pisane w C, a obecnie w Javie, COBOL-u, C++, Visual Basic-u, REXX-ie. - jednym z typów s Java stored procedures. Wywołanie procedury składowanej jest traktowane jako zwykłe wywołanie zewntrzne. Procedura moe by wywoływana lokalnie (na tym samym systemie, co działajca aplikacja) lub na innym systemie. Procedury składowane s uyteczne w rodowisku rozproszonym, gdy poprawiaj wydajno rozproszonych aplikacji przez redukcj ruchu informacji w sieci komunikacyjnej. Np. jeeli aplikacja kliencka potrzebuje wykona kilka operacji bazodanowych na serwerze zdalnym, mona wyda wiele rónych da bazodanowych ze strony klienta lub wywoła procedur składowan. W pierwszym przypadku startuje si dialog z systemem zdalnym za kadym razem, gdy wydaje si jakie danie. W przypadku drugim tylko zdanie wywołania (call) i parametry przekazywane s po linii. Tak wic procedury składowane mog by uywane dla rónych celów aplikacyjnych: wykonania sekwencji operacji na zdalnej maszynie kontroli dostpu do obiektów bazodanowych wykonania niebazodanowych funkcji Wyobramy sobie nastpujc sytuacj: Pewne przedsibiorstwo ma kilka central, w których znajduj si serwery i oddziałów, w których znajduj si systemy klienckie. Uytkownicy oddziałów pracuj na aplikacji FAKTURA, która aktualizuje 3 tabele na serwerze: 1. tabel FAKTURA 2. tabel KLIENT 3. tabel SALDO Rekord faktury jest zaznaczany (flagowany) markerem czyszczcym, a nastpnie odpowiedni rekord tabeli KLIENT jest aktualizowany przez odliczenie kwoty faktury od biecej (całkowitej) kwoty znajdujcej si na koncie. Na koniec, aktualizowane jest saldo. Poniszy diagram ilustruje aplikacj rozproszon, która była zaimplementowana bez??? procedur składowanych.

4 2 system klienta Aplikacja rozproszona bez procedur Server UPDATE faktury faktura UPDATE klienta klient UPDATE salda saldo oddział Aplikacja rozproszona z procedur Centrala mojaproc EXEC SQL UPDATE faktury faktura CALL mojaproc UPDATE klienta klient ENDEXEC UPDATE salda saldo Porównanie procedut składowanych, triggerów i UDF-ów. Procedury składowane Triggery UDF wywołanie wykonanie polecenia CALL bazodanowe WE/WY jako funkcja w zdaniu SQL rodowisko rozproszone/nierozproszone aplikacje rozproszone/nierozproszone aplikacje rozproszone/nierozproszone aplikacje jzyk jakikolwiek program zawierajcy JAVA jakikolwiek program zawierajcy JAVA jakikolwiek program zawierajcy JAVA metoda konwersacji jawne, dwustronne przekazywanie parametrów niejawne przesyłanie parametrów systemu jawne, dwustronne przekazywanie parametrów DB2 ma swój jzyk DB2 SQL Procedural Language - SQL PL. Ten jzyk jest uywany nie tylko w procedurach składowanych, ale równie w funkcjach uytkownika UDFs, triggerach i dynamicznym SQL-u. Oto przykład procedury SQL, która moe by uyta do kontroli operacji bazodanowej

5 CREATE PROCEDURE administrator.update_sal ( IN empnum CHAR(6), IN rating SMALLINT) LANGUAGE SQL BEGIN IF rating = 1 THEN UPDATE employee SET salary = salary * 1.10, bonus = 1500 WHERE empno = empnum; ELSE UPDATE employee SET salary = salary * 1.05, bonus = 1000 WHERE empno = empnum; END IF; END 3 2 Podstawowa struktura procedury Procedur tworzy si przy uyciu polecenia CREATE PROCEDURE Najprostsza procedura: CREATE PROCEDURE proc01 () BEGIN CREATE PROCEDURE nazwa ( <lista parametrów>) <właciwoci procedury> <parametry kontrolne procedury> BEGIN ciało_procedury END CREATE PROCEDURE nazwa ( IN OUT INOUT parametr typ) LANGUAGE SQL dla LUW nie trzeba [EXTERNAL ACTION NO EXTERNAL ACTION] tylko dla LUW - wtedy, gdy akcja zmienia stan obiektu nie zarzdzanego przez DB2 [SPECIFIC nazwa_specyfikacji czyli inaczej unikalna nazwa procedury] [DYNAMIC RESULT SETS liczba] [NOT DETERMINISTIC DETERMINISTIC] [CALLED ON NULL INPUT] BEGIN ciało_procedury END Kiedy nazwa procedury nie jest kwalifikowana, schemat procedury jest wyznaczany na podstawie schematu biecego - czyli autoryzowanego identyfikatora biecego uytkownika

6 Kwalifikowane nazwy - np. db2admin.reademp. Uwaga! Nie moe to by schemat SYS! Parametry Definicja parametrów składa si z 3 czci: 1. trybu definiujcego czy parametr jest WE (IN), WY (OUT), czy WE/WY (INOUT). Parametr w trybie INOUT pozwala przekaza warto do wywoływanego podprogramu i zwróci warto na zewntrz wywoływanego podprogramu. Wewntrz programu taki parametr zachowuje si zainicjowana zmienna 2. nazwy parametru 3. SQL-owego typu i rozmiaru danych tego parametru CREATE PROCEDURE update_pensja (IN nr_prac INTEGER, IN procent_wzrostu DECIMAL(4,2), INOUT ilosc_prac INTEGER, OUT zaktualizowana_pensja DECIMAL(5,2)) Procedura moe te nie mie adnych parametrów, a nawiasy mog by wtedy pominite. CREATE PROCEDURE update_pensja LANGUAGE SQL BEGIN lub: CREATE PROCEDURE update_pensja() LANGUAGE SQL BEGIN Typy danych Mog by typy 2 kategorii: wbudowane - Integer (Smallint, Bigint), Decimal (Numeric), Real (Double), Char, Varchar, CLOB (1- bajtowe Character Large Object), GRAPHIC, DBCLOB (2-bajtowe Character Large Object), BLOB (Binary Large Objects), Date, Time, Timestamp, ROWID (iseries) uytkownika - UDT (User-defined Data Types). Dla typów wbudowanych String mona specyfikowa podtypy - np. kolumny CHAR i VARCHAr mog by definiowane jako FOR BIT DATA eby przechowywa dane binarne. Do tworzenia typów UDT uywa si: CREATE DISTINCT TYPE nazwa AS ródłowy_typ_danych WITH COMPARISIONS Klauzula WITH COMPARISIONS pozwala na uycie operatorów dostarczonych przez system dla ródłowych typów danych. Ta klauzula nie jest dozwolona dla typów ródłowych: BLOB, CLOB, DBCLOB,.. Niech przykładowo zdefiniowano 2 zmienne: DECLARE v_w_milach DOUBLE; DECLARE v_w_kilometrach DOUBLE; Chc zapobiec wykoniu nieprawidłowej operacji typu: * IF (v_w_milach > v_w_kilometrach) - (nie mog porówna bez konwersji) Mog wobec tego stworzy 2 typy: - 4 -

7 5 CREATE DISTINCT TYPE mile AS DOUBLE WITH COMPARISIONS CREATE DISTINCT TYPE kilometry AS DOUBLE WITH COMPARISIONS Teraz mog zadeklarowa zmienne: DECLARE v_w_milach MILE; DECLARE v_w_kilometrach KILOMETRY;... i teraz dostan błd SQL-owy jeeli wykonam *. W momencie stworzenia UDT, DB2 generuje 2 funkcje rzutowania???????: jedna rzutuje z UDt na typ ródłowy - MILE (DOUBLE) druga rzutuje na odwrót - DOUBLE (MILE). Podobnie si dzieje dla KILOMETRY. Tak wic, eby zadziałało polecenie: IF (v_w_milach > 30.0) trzeba napisa: IF (v_w_milach > MILE (DOUBLE(v_w_kilometrach)/1,6)) IF (v_w_milach >MILE(30.0)) 2.2 Własnoci procedury Własnoci procedury to: jzyk, liczba oczekiwanych zbiorów wynikowych, itd. Klauzula SPECIFIC jest wana, kiedy wymagana jest definicja procedury o tej samej nazwie, ale z inn liczb parametrów - tzw. przeładowanie - ale dotyczy to tylko iseries i LUW (Linux, Unix i Windows). CREATE PROCEDURE suma (IN p_a INTEGER, IN p_b INTEGER, OUT p_s INTEGER) LANGUAGE SQL SPECIFIC suma_ab BEGIN SET p_s = p_a + p_b; END CREATE PROCEDURE suma (IN p_a INTEGER, IN p_b INTEGER, IN p_c INTEGER, OUT p_s INTEGER) LANGUAGE SQL SPECIFIC suma_abc BEGIN SET p_s = p_a + p_b + p_c; END Podczas wywołania procedury suma DB2 wyznacza wersj procedury na podstawie liczby parametrów. CALL suma(100, 200,?) - 5 -

8 Natomiast niedozwolone jest definiowanie procedur p tej samej nazwie z t sam liczb parametrów rónego typu. 6 Co trzeba zrobi, eby usun tak przeładowan procedur? wyspecyfikowa parametry procedury w poleceniu DROP PROCEDURE - np. DROP PROCEDURE suma(integer, INTEGER, INTEGER) uy DROP SPECIFIC PROCEDURE - np. DROP SPECIFIC PROCEDURE suma_ab Taka nazwa specyfikacji moe te by uyta w zdaniu COMMENT ON - np. COMMENT ON SPECIFIC PROCEDURE suma_abc IS To jest 3-parametrowa wersja procedury W LUW jeeli nazwa specyfikacji nie jest podana jawnie podczas tworzenia procedury, DB2 generuje unikaln nazw składajc si z SQL i znacznika czasowego:sqlyymmddhhmmsshhn Klauzula DETERMINISTIC pozwala na okrelenie procedury, która zwraca te same wyniki dla kadego wywołania z identycznymi parametrami wejciowymi i ma słuy dalszej poprawie wydajnoci. Klauzula CALLED ON NULL INPUT oznacza, e procedura bdzie zawsze wywoływana nawet, jeeli jej parametry wejciowe bd NULL-ami. W opcji RESULT SETS podaje si maksymaln liczb zbiorów wynikowych Otrzymywanie zbioru wynikowego eby zwróci zbiór wynikowy do aplikacji wywołujcej, procedura potrzebuje deklaracji kursora dla wybranych wierszy. Wiele zbiorów wynikowych moe by zwróconych, ale kady z nich wymaga niezalenego zdania DECLARE CURSOR. Przykład: CREATE PROCEDURE GetCusName() RESULT SETS 1 tu podaj max. liczb zbiorów wyn. LANGUAGE SQL BEGIN DECLARE c1 CURSOR WITH RETURN FOR kursor uyto po to, aby zwróci zbiór SELECT nazwisko FROM klient ORDER BY nazwisko OPEN c1; END DECLARE rs1 RESULT_SET_LOCATOR VARYING; CALL procedure1(); ASSOCIATE RESULT SET LOCATOR (rs1, rs2) WITH PROCEDURE procedure1; ALLOCATE cursor1 CURSOR FOR RESULT SET rs1; ALLOCATE cursor2 CURSOR FOR RESULT SET rs2; FETCH FROM cursor1 INTO var1, var2 ; FETCH FROM cursor2 INTO var3 ; Kursor jest zamykany przez program wywołujcy po zwróceniu zbioru wynikowego

9 2.3 Parametry kontrolne procedury, kontrolujce sposób tworzenia procedury Ustawia si je poleceniem SET OPTION. Do tych parametrów zalicza si: DBGVIEW - generuje informacje do debugowania, OUTPUT - wylistowuje wyjcie, TGTRLS - generuje kod dla OS/ Ciało procedury BEGIN DECLARE <deklaracja_zmiennych> DECLARE CURSOR <deklaracja_kursorów> <deklaracja_wyjtków> <zdania_sql> END Dobrym zwyczajem jest wstawianie komentarzy: poprzedzanych symbolami -- otoczonych - jak w C - symbolami /*... */ Zmienne musz by deklarowane na pocztku bloku BEGIN/END przed jakimikolwiek zdaniami SQL. W przeciwnym wypadku wystpi błd. Zmienne musz mie nazw rón od nazw kolumn tych tabel, do których odwołuje si procedura (ale błd nie wystpi). Najlepiej poprzedza nazwy zmiennych v_ a nazwy parametrów p_. Po zadeklarowaniu zmiennych, s one inicjalizowane NULL-ami, chyba, e uyta zostanie klauzula DEFAULT inicjalizujca zmienn pewn wartoci. DECLARE v_nr_prac VARCHAr(6); DECLARE v_total, v_liczba INTEGER DEFAULT 0; Mona ustawi warto pojedynczej zmiennej uywajc SET, lub polece SELECT i FETCH w kombinacji z INTO. Polecenie VALUES uywane jest do wyliczenia wartoci rejestru i zwizania z ni pewnej zmiennej. SET v_total = v_total + 1 SELCT max(pensja) INTO v_max FROM prac; VALUES CURRENT DATE INTO v_date; Przykład prostej procedury, aktualizujcej zbiór nowym nazwiskiem klienta na podstawie numeru i nowego nazwiska klienta: CREATE PROCEDURE update_klient (IN nr CHARACTER(5), IN nazwisko CHARACTER(20)) LANGUAGE SQL UPDATE klient SET nazw_klienta = nazwisko WHERE nr_klienta = nr; - 7 -

10 2.4.1 Rejestry W DB2 istniej specjalne rejestry, bdce rejestrami pamiciowymi pozwalajcymi DB2 dostarcza aplikacji informacji o jej rodowisku. Do tych rejestrów mona si odwoływa w zdaniach SQL. 8 modyfikowalne M niemodyfikowalne Najczciej uywa si nastpujcych rejestrów: CURRENT DATE - data na serwerze CURRENT TIME - CURRENT TIMESTAMP - CURRENT ISOLATION - poziom izolacji dla dynamicznego zdania SQL w ramach biecej sesji CURRENT LOCK TIMEOUT - liczba sekund, które aplikacja musi odczeka eby uzyska blokad - mona modyfikowa M CURRENT PATH - mona modyfikowa M. cieka jest list schematów, które DB2 (kolejno!) przeszukuje eby zlokalizowa procedur. Domyln ciek w LUW jest: SYSIBM, SYSFUN, SYSPROC, DB2ADMIN CURRENT PACKAGE PATH - M CURRENT SCHEMA - M nazwa schematu uywana do kwalifikowania niekwalifikowanych obiektów bazodanowych. Mona modyfikowa przez SET CURRENT SCHEMA USER - ID autoryzacji uywany do połczenia z baz SESSION USER - ID autoryzacji uywany dla biecego schematu - jest synonimem do rejestru USER SYSTEM USER - ID autoryzacji uytkownika połczonego z baz. eby uzyska warto rejestru, naley uy komendy SELECT, natomiast eby zaktualizowa modyfikowalny rejestr, naley uy komendy SET. SELECT CURRENT SCHEMA FROM SYSIBM.SYSDUMMY1; SET CURRENT SCHEMA = db2admin Oto przykład procedury tworzcej tabel datetab w celu demonstracji uycia specjalnych rejestrów w SQL-u. CREATE PROCEDURE registersample (OUT p_start TIMESTAMP, OUT p_end TIMESTAMP, OUT p_c1 TIMESTAMP, OUT p_c2 TIME, OUT p_user CHAR(20)) LANGUAGE SQL SPECIFIC rejestrsample BEGIN CREATE TABLE datetab (c1 TIMESTAMP, c2 TIME, c3 DATE); VALUES CURRENT TIMESTAMP INTO p_start; INSERT INTO datetab VALUES (CURRENT TIMESTAMP, CURRENT TIME, CURRENT DATE + 3 DAYS); SELECT c1, c2 INTO p_c1, p_c2 FROM datetab; VALUES CURRENT TIMESTAMP INTO p_end; SET p_user = USER; DROP TABLE datetab; END 3 Wykonywanie procedur Uprawnienia, które musi mie user: GRANT EXECUTE ON SPECIFIC PROCEDURE <nazwa procedury> TO USER <user> - 8 -

11 Uprawnienia, które musi mie developer: GRANT <operacje> ON <obiekty> TO USER <user> GRANT BINDADD ON <baza danych> TO USER <user> 9 Polecenie CREATE PROCEDURE nie ma opcji replace, wic jeeli chc zastpi istniejc definicj procedury naley uy DROP PROCEDURE. Procedur wywołuje si poleceniem CALL, natomiast to polecenie wywołuje zewntrzn procedur: EXEC SQL CALL hsale (:param1, :param2, :param3, :param4) END-EXEC Utworzenie z okna komend: db2 -f simple.sql db2 call proc01() 3.1 Dynamiczny SQL W dynamicznym SQL-u polecenia s znane jedynie podczas wykonywania. eby pracowa z dynamicznym SQL-em wykorzystuje si polecenia: PREPARE bierze zmienn VARCHAR zawierajc polecenie SQL i konwertuje je na polecenie wykonywalne EXECUTE pozwala wykona poprzednio przygotowane polecenie PREPARE zdanie EXECUTE IMMEDIATE przygotowuje i wykonuje polecenie zawarte w stringu. Np. EXECUTR IMMEDIATE UPDATE tabela SET... DECLARE statement1 STATEMENT; SET string1 = UPDATE tab1 SET col1 =? WHERE col2 =? ; PREPARE statement1 FROM string1 ; EXECUTE statement1 USING var1,var Dynamiczny SQL - kursory DECLARE statement1 STATEMENT; DECLARE cursor1 CURSOR FOR statement1; SET string1 = SELECT column1 FROM tab1 WHERE column2 = CHAR( variable1) ; PREPARE statement1 FROM string1 ; OPEN cursor1; 3.2 Dynamiczny SQL - parametryzowanie -- Złómy, e sygnatura procedury wyglda: schema1.procedure1(in,inout,out) - 9 -

12 DECLARE statement1 STATEMENT; SET string1 = CALL schema1.procedure1 (?,?,?) ; 10 PREPARE statement1 FROM string1 ; EXECUTE statement1 INTO var1,var2 USING var3,var4; USING VAR3 VAR4 CALL PROCEDURE1??? definicja IN INOUT OUT INTO VAR1 VAR2 4 Elementy jzyka SQL PL 4.1 Sekwencje Sekwencje s obiektami, które pozwalaj automatycznie generowa wartoci. CREATE SEQUENCE nazwa_sekwencji AS INTEGER typ_danych START WITH wart_numeryczna INCREMENT BY wart_numeryczna MINVALUE wart_numeryczna MAXVALUE wart_numeryczna [NO CYCLE CYCLE] Do generacji i uzyskania wartoci sekwencji uywane s wyraenia: NEXT VALUE i PREVIOUS VALUE. VALUES PREVIOUS VALUE FOR sek1 INTO Instrukcje sterujce 1. ptle FOR, WHILE, LOOP, REPEAT ptla FOR nazwa ptli loop_name moe by uyta do kwalifikowania zmiennych odnoszcych si do wartoci kolumn w zwizanym z FOR kursorze. Ptla ta jest uywana tylko do przetwarzania wierszy tabel - tzn. przetwarzania kadego wiersza zwróconego przez podan instrukcj SELECT. FOR loop_name AS SELECT kol1, kol2, DO SET var1 = loop_name.col1; END FOR; ptla WHILE WHILE (var1 = 1) DO END WHILE; ptla LOOP

13 moe by zdefiniowana etykieta bloku LOOP. Wewntrz ptli musi by wyspecyfikowana opcja LEAVE, eby mona było wyj z ptli (ale mog te wyj deklarujc handler - zgłoszenie). Z kolei opcja ITERATE wymusza nastpn iteracj w ptli. etykieta: LOOP LEAVE etykieta; ITERATE etykieta; END LOOP; ptla REPEAT REPEAT UNTIL (var1 < 100) END REPEAT; ptla GOTO - GOTO zastpuje ITERATE. GOTO etykieta; RETURN int_value instrukcje warunkowe 4.3 Kursory Dopuszcza si stosowanie trzech form instrukcji IF: IF-THEN, IF-THEN-ELSE, i IF-THEN-ELSEIF IF v_var = 1 THEN UPDATE ELSE INSERT END IF; instrukcja CASE mona j uy na 2 sposoby: CASE CASE v_var WHEN v_var = 0 THEN WHEN 0 THEN... WHEN v_var = 10 THEN WHEN 10 THEN... ELSE ELSE... END CASE; END CASE SQL PL niejawnie deklaruje kursor dla wszystkich instrukcji manipulowania danymi, włczajc zapytania zwracajce tylko jeden wiersz. Dla zapyta zwracajcych wicej ni jeden wiersz mona jawnie zadeklarowa kursor przetwarzajcy indywidualnie wiersze

14 12 DECLARE SQLSTATE CHAR(5); DECLARE cursor1 CURSOR FOR select ; -- Po deklaracji zmiennych OPEN cursor1; FETCH FROM cursor1 INTO var1, var2, ; WHILE (SQLSTATE = ) DO END WHILE; CLOSE cursor1; DB2 niejawnie otwiera kursor do przetwarzania kadej instrukcji SQL'a nie połczonej z jawnie zadeklarowanym kursorem. SQL PL pozwala odwoływa si do ostatniego niejawnego kursora jak do kursora SQL. Tym samym mona uywa atrybutów kursora w celu pozyskania informacji o ostatnio wykonanej instrukcji SQL Kursory FOR UPDATE Instrukcja OPEN wykonuje zapytanie skojarzone z jawnie zadeklarowanym kursorem. Otwarcie kursora wykonuje zapytanie i identyfikuje aktywny zbiór, który zawiera wiersze spełniajce kryterium wyszukiwania. Dla kursorów zadeklarowanych z uyciem klauzuli FOR UPDATE, instrukcja OPEN blokuje te wiersze. DECLARE SQLSTATE CHAR(5); DECLARE cursor1 CURSOR FOR select FOR UPDATE; -- domniemana warto: FOR READ ONLY OPEN cursor1; FETCH FROM cursor1 INTO var1, var2, ; WHILE (SQLSTATE = ) DO DELETE FROM tab1 WHERE CURRENT OF cursor1; UPDATE tab1 SET WHERE CURRENT OF cursor1; END WHILE; Kursory WITH HOLD Te kursory s zachowywane po COMMIT. DECLARE cursor1 CURSOR WITH HOLD FOR select FOR UPDATE; COMMIT; -- teraz kursory nie bd zamknite ROLLBACK; -- wszystkie kursory s zamykane -- wszystkie blokady s zwalniane -- lokatory BLOB-ów s zwalniane Kursory READ ONLY Nie bdzie zakłdana blokada EXCLUSIVE LOCK

15 4.3.4 Kursory WITH RETURN Tylko dla aplikacji bazy z OS/ Podstawowa obsługa błdów W DB2 s nastpujce typy polece, zgłaszajcych błd: 1. zmienne SQLCODE i SQLSTATE 2. deklaracje warunku i zgłoszenia (handlera) 3. polecenia SIGNAL i RESIGNAL 4. GET DIAGNOSTICS EXCEPTION SQLCODE/SQLSTATE W DB2 s 2 zmienne, których DBMS uywa do identyfikacji błdu: 1. SQLSTATE - kod standaryzowany - niezaleny od platformy. Ma 5 znaków, z czego 2 pierwsze reprezentuj klas błdu, a pozostałe 3 - szczegółowe warunki błdu (podklas błdu). 2. SQLCODE - tak DB2 raportuje błd i ostrzeenia - sposób oryginalny DB2. Jeeli jest błd, to SQLCODE jest < 0, SQLSTATE Jeeli jest ostrzeenie, to SQLCODE jest > 0 i pierwsze 2 cyfry SQLSTATE = Jeeli jest wszystko w porzdku, to SQLCODE = 0 i SQLSTATE = DECLARE SQLSTATE CHAR(5) DETAULT ;-- ISO/ANSI SQL xxx sukces -- 01xxx ostrzeenie -- 02xxx not found -- other błd DECLARE SQLCODE INT DETAULT 0; -- DB2 specific -- 0 sukces -- >0 ostrzeenie not found -- <0 błd S te oczywicie błdy definiowane przez uytkownika. Np. pracownik nie moe zarabia wicej od swojego kierownika. Błdy te s kodowane w SQLSTATE przez pierwsze znaki Deklaracja warunku i zgłoszenia CONDITION FOR Jakie s typowe sytuacje wymagajce jawnego zgłoszenia błdu? w SELECT-cie nie ma adnych wierszy nastpiło naruszenie wizów integralnoci w poleceniu UPDATE lub DELETE itd. Wic pisz: DECLARE record_not_found CONDITION FOR ;02000 record_not_found to nazwa warunku DECLARE check_constraint_error CONDITION FOR Po słowie CONDITION FOR wystpuje wzity numer z SQLSTATE. Wtedy deklarowany warunek wystpi, gdy np. SQLSTATE =

16 eby uy nazwy warunku trzeba zadeklarowa zgłoszenie, a potem kiedy handler jest zdefiniowany/zadeklarowany mona podj jedn z 3 akcji: 1. CONTINUE - sterowanie przechodzi do polecenia znajdujcego si za tym poleceniem, które wywołało błd. 2. EXIT - sterowanie jest przekazywane na koniec SQL złoonego 3. UNDO - wykonywana jest operacja rollback na złoonym SQL zaczynajcym si od BEGIN ATOMIC. Przykład: DECLARE not_found CONDITION FOR DECLARE CONTINUE HANDLER FOR not_found SET at_end = 1 14 Poza predefiniowanymi w SQLSTATE handlerami mona te definiowa wyjtki w nastpujcych sytuacjach: SQLEXCEPTION SQLWARNINGS NOT FOUND Oto przykład typowego bloku polece na pocztku procedury: DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET v_sqlcode = SQLCODE; DECLARE UNDO HANDLER FOR SQLWARNING SET v_sqlcode = SQLCODE; DECLARE EXIT HANDLER FOR NOT FOUND SET v_sqlcode = SQLCODE; Ogólna posta: DECLARE condition-name CONDITION FOR SQLSTATE xxxxx ; Przykład: DECLARE not_found CONDITION FOR SQLSTATE ; SIGNAL/RESIGNAL SIGNAL jawnie sygnalizuje warunek błdu/ostrzeenia. Jeeli jest definiowane zgłoszenie eby zgłosi wyjtek, jest to wywoływane natychmiast przez polecenie SIGNAL. Sterowanie przechodzi wtedy do zdefiniowanego zgłoszenia błdu. Przykład: SIGNAL SQLSTATE zgłoszenie bdzie uruchomione Polecenie RESIGNAL zwraca SQLSTATE i SQL MESSAGE TEXT do wywołujcej zgłoszenie aplikacji. To polecenie ustawia wiadomo diagnozujc. Przykład: RESIGNAL SQLSTATE 38TNF SET MESSAGE TEXT = nie znaleziono pracownika Przykład zaawansowanej obsługi: DECLARE EXIT HANDLER FOR SQLSTATE = xxxxx RESIGNAL SQLSTATE xxxxx SET MESSAGE TEXT =... Ostatni przykład: SIGNAL SQLSTATE xxxxx ; DECLARE condition1 CONDITION FOR SQLSTATE ;

17 IF (pojawił si błd) THEN SIGNAL condition1 SET MESSAGE_TEXT = Twój komunikat błdu ; GET DIAGNOSTICS GET DIAGNOSTICS EXCEPTION jest uywany w celu umoliwienia dostpu do informacji zwizanej z błdem/ostzreeniem. Samo GET DIAGNOSTICS moe te by uyte do pozyskania informacji o liczbie wierszy przetworzonych przez instrukcje: INSERT, UPDATE, DELETE. Przykład: GET DIAGNOSTICS num_record = ROW_COUNT 4.5 Złoony SQL Złoony SQL pozwala grupowa wiele polece (zwykle INSERT, UPDATE i DELETE) w jeden wykonywalny blok. Taki blok polece moe by wykonany jako pojedynczy strumie, co redukuje czas wykonania i ruch w sieci. Złoony SQL nie gwarantuje porzdku wykonania polece składowych, tak wic naley unika wzajemnych zalenoci midzy poleceniami. Ogólna struktura zdania złoonego: etykieta: BEGIN <lista lokalnych deklaracji zmiennych> < lista lokalnych deklaracji kursora> <lista lokalnych deklaracji zgłosze - handlerów> <polecenia SQL> END; jak wida mona etykietowa: lab1: BEGIN DECLARE v_id INT; lab2: BEGIN DECLARE v_id INT; SET lab1.v_id = 1; SET lab2.v_id = 10; SET v_id = 100; END lab2; END lab1 BEGIN ATOMIC DECLARE v_var2 INTEGER; CREATE TABLE mytab(id INT); CREATE INDEX mytab_idx ON mytab(id); BEGIN DECLARE v_var4 INTEGER DEFAULT 100; INSERT INTO mytab(id) VALUES (99),(v_var4); GET DIAGNOSTICS v_var2 = ROW_COUNT; SET p_result = 'Number of rows: ' char(v_var2); END; -- rednik jest wymagany END

18 16 BEGIN ATOMIC -- SQL e traktowane s jak jedno polecenie. Nie mog tu uy COMMIT i ROLLBACK END; -- nieobsłuony błd -> zatrzymanie procedury. ->-- wszystkie zmiany s anulowane BEGIN NOT ATOMIC -- to jest domniemana wart. COMMIT; ROLLBACK; ROLLBACK TO SAVEPOINT sp1; END; -- nieobsłuony błd -> zatrzymanie procedury ->-- Zmiany pozostaj. Rczne wycofanie lub zatwierdzenie 5 Procedury 5.1 External Stored Procedures Zewntrzna procedura składowana jest pisana przez uytkownika w jednym z jzyków programowania C, COBOL, RPG, FORTRAN, JAVA, C++, REXX,... na serwerze iseries. eby stworzy zewntrzn procedur, kod ródłowy dla jzyka hosta musi by skompilowany, tak wic tworzony jest obiekt program. Wtedy uywane jest polecenie CREATE PROCEDURE, które podpowiada systemowi gdzie znajduje si obiekt program, który implementuje t procedur. Czyli najpierw - przed uyciem zewntrznej procedury - musi by ona zarejestrowana w bazie, np. przez CREATE PROCEDURE. Np. procedura zwracajca nazwisko dostawcy, który miesicznie i rocznie sprzedaje najwicej produktów. EXEC SQL CREATE PROCEDURE hsale (IN rok INTEGER, IN miesic INTEGER, OUT nazwisko_dostawcy CHAR(20), OUT hsale DECIMAL(11,2)) EXTERNAL NAME sproclib.hsales LANGUAGE RPGLE PARAMETER STYLE GENERAL END_EXEC 5.2 Procedury rejestrowe (registering stored procedures) Czym si róni polecenie CREATE PROCEDURE od DECLARE PROCEDURE? W CREATE procedura i definicje parametrów dodawane s do systemowych tabel katalogu - SYSROUTINES, i SYSPARMS (1 wiersz na 1 parametr). Jest te tabela SYSPROC. Tak wic procedura zaczyna by dostpna dla jakiegokolwiek programu klienckiego chodzcego na lokalnym lub zdalnym systemie. Czyli CREATE PROCEDURE potrzebuje by wykonane tylko raz w swoim yciu. Natomiast DECLARE jest głównie uywane do tymczasowej rejestracji procedury w programie. SELECT * FROM QSYS2.SYSROUTINES;

19 6 SQL PSM (rozszerzenia persistent stored module) - Jzyk skryptowy do deklaracji i zarzdzania procedurami SQL PSM moe by uyty w: Procedurach składowanych, które s wywoływane poleceniem CALL. Triggerach automatycznie wywoływanych kiedy zajdzie zdarzenie aktywujce. Funkcjach definiowanych przez uytkownika Kompilacja procedury Skompilowany kod oraz opcjonalnie kod ródłowy procedury przechowany jest w katalogach systemowych. Jednoczenie tworzony jest pakiet, w którym przechowywane s plany wykonania statycznych polece SQL. CREATE PROCEDURE OUT_MEDIAN ( OUT mediansalary DOUBLE, OUT maxsalary DOUBLE) DYNAMIC RESULT SETS 0 LANGUAGE SQL MODIFIES SQL DATA BEGIN DECLARE v_numrecords INT DEFAULT 1 ; DECLARE v_salary1 DOUBLE DEFAULT 0 ; SQL PL pseudo code Parsing and compilation Package DECLARE c1 CURSOR FOR SELECT CAST(salary AS DOUBLE) FROM staff Procedure text DB2 System Catalogs 6.2 Etapy wdraania procedur -- REBIND powtórne przygotowanie planów -- zapyta statycznych SQL-i CALL SYSPROC.REBIND_ROUTINE_PACKAGE ('P', 'MYSCHEMA.MYPROC', 'CONSERVATIVE') -- Przeniesienie skompilowanego kodu -- procedury do pliku GET ROUTINE INTO file1 FROM SPECIFIC PROCEDURE proc1 HIDE BODY ; -- Wgranie skompilowanej procedury do bazy: PUT ROUTINE FROM file1 ; 6.3 Opcje kompilacji i reoptymalizacji db2set DB2_SQLROUTINE_PREPOPTS= BLOCKING {UNAMBIG ALL NO} DATETIME {DEF USA EUR ISO JIS LOC} DEGREE {1 degree-of-parallelism ANY}

20 DYNAMICRULES {BIND RUN} EXPLAIN {NO YES ALL} EXPLSNAP {NO YES ALL} FEDERATED {NO YES} INSERT {DEF BUF} ISOLATION {CS RR UR RS NC} QUERYOPT optimization-level VALIDATE {RUN BIND} -- na poziomie instancji; -- wymagany db2stop,db2start 18 VALUES GET_ROUTINE_OPTS() ; -- biece parametry kompilacji CALL SET_ROUTINE_OPTS ('VALIDATE RUN ISOLATION UR') ; -- ustawienie dla biecej sesji CALL SET_ROUTINE_OPTS(NULL) -- przywrócenie domniemanych ustawie 7 Koncepcja nazywania procedur xxxxlep L- jzyk E - rodowisko: N - Windows 4 - AS/400 M - OS/390 P - cel: C - klient S - procedura SQL 8 UDF Wyróniamy 2 rodzaje: 4. funkcje skalarne - zwracaj pojedyncz, skalarn warto; mog by typu: ródłowe - zarejestrowane w bazie, odwołujce si do innej funkcji SQL - napisane w SQL zewntrzne - napisane w pewnym jzyku wysokiego poziomu 5. funkcje tabel CREATE FUNCTION nazwa <deklaracja parametrów> RETURNS SPECIFIC LANGUAGE BEGIN <ciało funkcji> RETURN END

21 Zadania do wykonania na laboratorium 19 9 Dodatkowe informacje 9.1 Kade zdanie SQL musi by zakoczone rednikiem (;). 9.2 Zdanie CREATE PROCEDURE musi by zakoczone symbolem małpa po słowie END). 9.3 Dana procedura nie moe by modyfikowana np. przez zdanie ALTER PROCEDURE, a jedynie przez zmian jej definicji (najpierw DROP PROCEDURE nazwa a potem ponownie CREATE PROCEDURE). 10 Struktura uywanej bazy danych Department (deptno, deptname, mgrno, location) Employee (midinit, lastname, workdept, hiredate, job, birthdate, salary, bonus, comm,...) Org (deptnumb, deptname, manager, division) Project (projno, projname, deptno, respemp) Sales (sales_date, sales_person, region, sales) Staff (id, name, dept, job, years, salary, comm) Pracownik (nr_prac, nazwisko, nr_zesp) Zespol (nr_zesp, nazwa_zesp, lokalizacja, nr_prac_kz) Temat () Dochod (nr_prac, kwota, premia, nr_tem, data) 11 Czynnoci wstpne 11.1 Zalogowa si do systemu Windows (np. w sali 830 jako uytkownik lab1 z hasłem Kowalski1 do domeny d830) Uruchomi wskazan przez prowadzcego maszyn wirtualn Uruchomi okno komend: START PROGRAMY IBM DB2 Narzdzia uruchamiane z wiersza komend okno komend 11.4 Sprawdzi istniejce instancje na serwerze (komenda db2ilist). Jeeli zachodzi potrzeba wystartowa instancj poleceniem db2start Sprawdzi istniejce bazy danych (komenda db2 list database directory) Jeeli baza sample nie istnieje, utworzy j poleceniem db2sampl Połczy si z baz poleceniem db2 connect to sample Sprawdzi istniejce w bazie tabele (komenda db2 list tables) Sprawdzi istniejce w bazie tabele równie systemowe(komenda db2 list tables for all)

22 11.10 Wywietli struktur wybranej tabeli polecenie db2 describe table nazwawybranejtabeli Wywietli konfiguracj bazy, sprawdzajc jzyk bazy (TERRITORY) i stron kodow (CODE SET): db2 get database configuration Sprawdzi licencj bazy db2licm -l Ustawi protokół komunikacji ze zdalnymi klientami na TCP/IP: db2set DB2COMM=tcpip Ustawi parametr SVCENAME na bazy: db2 update dbm cfg using svcename bazy Stworzy tabel WORKERS o atrybutach: id integer, name varchar(20), parent int, payment decimal(6,2), bonus decimal(6,2), salary decimal(6,2). Kluczem podstawowym jest id. Kolumna salary powinna by generowana automatycznie jako suma kolumn payment oraz bonus: db2 create table workers (id integer primary key NOT NULL,..., salary decimal(6,2) GENERATED ALWAYS AS (bonus+payment)); Stworzy tabel w1 o identycznej strukturze co workers, korzystajc z predykatu LIKE: db2 create table w1 LIKE workers; Wypełni tabel workers przykładowymi danymi: 1 Jurek NULL Piotr Adam Jan NULL Uruchomi i przeanalizowa działanie polecenia, wywietlajcego rekurencyjnie wszystkich przodków Adama: WITH temp1 (id, name, parent) AS ( SELECT w.id, w.name, w.parent FROM workers w WHERE w.name= ADAM UNION ALL SELECT w1.id, w1.name, w1.parent FROM workers w1, temp1 t1 WHERE w1.id = t1.parent) SELECT * FROM temp1; Wykona archiwizacj bazy do katalogu c:\db2\archiwum: db2 backup database sample to c:\db2\archiwum Odtworzy baz z wykonanego archiwum, sprawdzajc w katalogu c:\db2\archiwum czas: db2 restore database sample from c:\db2\archiwum taken at czas without rolling forward without prompting

23 12 Zadania W pliku ins.sql (plik mona pobra ze strony utworzy (na poziomie systemu operacyjnego) procedur ins, tworzc tabele Pracownik, Zespol, Dochod i wstawiajc do nich wiersze pochodzce z ju istniejcych w systemie tabel 12.2 Wywoła procedur ins znajdujc si w pliku ins.sql: db2 -f./ins.sql db2 call ins 12.3 Sprawdzi istniejce w bazie tabele (komenda db2 list tables) Utworzy procedur o nazwie ins_tem, tworzc i wypełniajc wartociami pocztkowymi tabel temat. W tym celu naley utworzy nowy zbiór (np. o nazwie ins_tem.sql) w katalogu biecym (Save As:./ins_tem.sql). Struktura tworzonej tabeli: nr_tem integer, nazwa_tem varchar(30), nr_prac_kt integer. Uwagi! Kolumn nazwa_tem tabeli temat naley wypełni danymi z kolumny projname tabeli project. Wartoci kolumny nr_tem maj by automatycznie generowane. W tym celu za specyfikacj typu kolumny naley doda fraz: generated by default as identity (start with 1increment by 1) 12.5 Utworzy, a nastpnie wywoła, procedur ins_tem znajdujc si w pliku ins_tem.sql: db2 -f./ins_tem.sql db2 call ins_tem 12.6 Sprawdzi istniejce w bazie tabele (komenda db2 list tables) i wylistowa zawarto tabeli temat: db2 select * from temat 12.7 Przeczyta z katalogu sysroutines wybrane informacje o procedurze ins_tem: db2 "select routinename, routinetype, text from sysibm.sysroutines where routinename = 'INS_TEM'" 12.8 Napisa procedur o nazwie sel (plik sel.sql) z jednym parametrem OUT typu integer, zwracajc wartoci kolumny nr_prac tabeli Pracownik. CREATE PROCEDURE sel (OUT nr integer) LANGUAGE SQL BEGIN SELECT... INTO nr FROM...; 12.9 Utworzy, a nastpnie wywoła, procedur sel: db2 -f./sel.sql db2 "call sel (?)"

24 Co si stało? Poprawi procedur sel, deklarujc kursor kurs1, który pozwoli na wylistowanie danej wartoci. W treci procedury po deklaracjach zmiennych naley kursor zadeklarowa i otworzy poleceniami DECLARE kurs1 CURSOR FOR SELECT... OPEN kurs1; a nastpnie w ptli WHILE pobiera aktualne wartoci, zapamitujc je w zmiennej reprezentujcej parametr wyjciowy: WHILE warunek DO FETCH kurs1 INTO parametr;...; END WHILE; W zwizku z tym, e ptla ma by wykonywana tyle razy, ile jest wierszy w tabeli Pracownik, naley zadeklarowa zmienn pomocnicz np. o nazwie liczba_rek, która bdzie przechowywała informacje o liczbie wierszy tabeli: SELECT... INTO liczba_rek FROM... ptla oraz drug zmienn pomocnicz np. o nazwie il, która bdzie pełniła funkcj licznika ptli. Wartoci zmiennej il naley w ptli ustawia poleceniem: SET il = il + 1; Poprawion procedur naley utworzy i ponownie wykona. Co si stało? Jeszcze raz poprawi procedur sel, dopisujc do polecenia DECLARE CURSOR fraz WITH RETURN (przed słowem FOR) i kasujc cał ptl WHILE. Sprawdzi działanie procedury Sprawdzi, czy w ten sam sposób, co w punkcie poprzednim, mona zwróci wartoci wszystkich kolumn tabel Pracownik i Dochod (zastosowa 2 kursory) Utworzy procedur o nazwie sel_prac, zwracajc wszystkie informacje o pracowniku (tabela Pracownik), którego numer podany jest parametrem procedury (typ IN). Utworzon procedur wywoływa: db2 "call sel_prac(10)" Poprawi utworzon w poprzednim punkcie procedur, dodajc wywietlanie komunikatu 'Brak pracownika o tym numerze w bazie' w momencie, gdy w tabeli Pracownik nie bdzie podanego parametrem numeru pracownika. W czci operacyjnej procedury naley zadeklarowa poleceniem DECLARE zmienn SQLSTATE jako CHAR(5) i 2 kursory, które posłu do póniejszej sygnalizacji błdu poleceniem SIGNAL: SIGNAL SQLSTATE '38000' SET MESSAGE_TEXT='Brak... ' Pierwszy z kursorów zadeklarowa z fraz WITH RETURN: DECLARE nazwakursora1 CURSOR WITH RETURN FOR SELECT... FROM Pracownik WHERE

25 natomiast drugi dla polecenia SELECT nr_prac FROM Pracownik WHERE...bez ww. frazy. 23 Kursor drugi otworzy (OPEN nazwakursora2), a nastpnie pobra dane do wczeniej zadeklarowanej zmiennej pomocniczej FETCH FROM nazwakursora2 INTO zmiennapomocnicza. W przypadku gdy pobranie nie powiedzie si (brak danych), naley zgłosi błd; w przeciwnym przypadku wywietli dane informacje na ekranie: IF (SQLSTATE <> '00000') THEN... zgłoszeniebłedu ELSE OPEN nazwakursora1; END IF; Napisa funkcj fun_nvl, sklejajc 2 cigi znaków (varchar(20)) podanych parametrem. Funkcja powinna mie posta: CREATE FUNCTION fun_nvl(zmienna typ,...) RETURNS varchar(40) LANGUAGE SQL RETURN (p_zm Utworzy i wykona funkcj nvl: db2 -f./fun_nvl.sql db2 "select fun_nvl('jan', 'Kowalski') from sysibm.sysdummy1" Utworzy procedur wiekowi, wypisujc nazwiska tych pracowników, którzy przekroczyli 70 rok ycia. W procedurze wykorzysta napisan specjalnie na jej potrzeby funkcj fun_wiek, obliczajc i zwracajc rónic (typ integer) lat (funkcja YEAR) pomidzy podan parametrem dat urodzin a dat biec (CURRENT_DATE). W funkcji wykorzysta polecenie: SELECT... FROM sysibm.sysdummy1; Funkcja bdzie uyta w procedurze we frazie WHERE polecenia SELECT:... WHERE fun_wiek(employee.birthdate) > 70; Napisa wyzwalacz (trigger) typu BEFORE o nazwie trig_del_doch zabezpieczajcy przed usuniciem jakichkolwiek wierszy z tabeli dochod. Wyzwalacz powinien zgłosi błd w przypadku, gdy zostanie wydane polecenie DELETE dla tabeli dochod: CREATE TRIGGER trig_del_doch BEFORE delete ON dochod FOR EACH ROW SIGNAL SQLSTATE '75001'('Nie wolno usuwa wierszy z tej Utworzy (poleceniem db2 -f...sql) wyzwalacz i przetestowa jego działanie wpisujc polecenie: db2 "DELETE FROM dochod WHERE kwota > 10000" W celu ograniczenia zjawiska kaskadowego wyzwalania triggerów, usun utworzony przed chwil trigger poleceniem: db2 drop trigger trig_del_doch;

26 12.22 Utworzy wyzwalacz trig_upd_sal, aktualizujcy kwot wypłaty pod warunkiem, e proponowana stawka nie przekracza 20% poprzedniej ("starej") wypłaty. W definicji triggera doda frazy: FOR EACH ROW MODE DB2ROW WHEN (...) Cz operacyjna triggera ma mie posta: BEGIN Napisa procedur upd_kt, aktualizujc wartoci kolumny nr_prac_kt tabeli temat. Aktualizacja ma przebiega nastpujco. Dla danego tematu (nr_tem) kierownikiem tego tematu powinien zosta pracownik, który dostał w nim (jednorazowo) maksymaln wypłat. W procedurze wykorzysta ptl FOR o konstrukcji: Ptla ta jest uywana tylko do FOR etykieta_ptli AS SELECT... przetwarzania wierszy tabel - DO tzn. przetwarzania kadego UPDATE... wiersza zwróconego przez END FOR

Ćwiczenia 2 IBM DB2 Data Studio

Ćwiczenia 2 IBM DB2 Data Studio Ćwiczenia 2 IBM DB2 Data Studio Temat: Aplikacje w Data Studio 1. Projekty Tworzenie procedur, UDF, trygerów zaczynamy od utworzenia projektu File -> New -> Project wybieramy Data Development Project.

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

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

1. Dodatkowe informacje. 2. Czynnoci wstpne. 3. Zadania

1. Dodatkowe informacje. 2. Czynnoci wstpne. 3. Zadania 1. Dodatkowe informacje 1.1. Kade zdanie SQL musi by zakoczone rednikiem (;). 1.2. Odwołanie do argumentu funkcji w ciele funkcji jest postaci $n, gdzie n jest numerem argumentu. 2. Czynnoci wstpne 2.1.

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

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

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

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

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

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

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

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

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

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

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

Aspekty aktywne baz danych

Aspekty aktywne baz danych Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać

Bardziej szczegółowo

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP). Procedury składowane c.d. Parametry tablicowe w Transact-SQL. W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP). Zadanie 1. Proszę napisad procedurę składowaną, która

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

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

Systemowe aspekty baz

Systemowe aspekty baz Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

Bardziej szczegółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

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

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

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

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

BAZA DANYCH SIECI HOTELI

BAZA DANYCH SIECI HOTELI Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu

Bardziej szczegółowo

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): Utwórz bazę danych Cw: CREATE DATABASE Cw Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): DBCC USEROPTIONS Przykład z zapisem do tabeli tymczasowej: --Jeśli istnieje tabela tymczasowa

Bardziej szczegółowo

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

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

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

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

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

Systemowe aspekty baz danych

Systemowe aspekty baz danych Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

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

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

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

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

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

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

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006 OBIEKTOWOŚĆ W BAZIE DANYCH ORACLE Monika Kruk Mariusz Grabowski Informatyka Stosowana WFiIS, AGH 13 grudzień 2006 Plan prezentacji kilka słów o bazie danych ORACLE rzecz o obiektach ORACLE tworzenie typów

Bardziej szczegółowo

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,

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

Uprawnienia, role, synonimy

Uprawnienia, role, synonimy Uprawnienia, role, synonimy Schemat, użytkownicy, autoryzacja użytkowników, uprawnienia systemowe i obiektowe, nadawanie i odbieranie uprawnień, tworzenie ról, przywileje, synonimy Schematy i użytkownicy

Bardziej szczegółowo

Ref. 7 - Język SQL - polecenia DDL i DML

Ref. 7 - Język SQL - polecenia DDL i DML Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość

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

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL 2012-01-20

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL 2012-01-20 Plan wykładu BAZY DANYCH II WYKŁAD 9 Dynamiczny SQL, NDS, EXECUTE IMMEDIATE, Pakiet DBMS_SQL, Obiekty w PL/SQL, Tworzenie, wywoływanie, dziedziczenie, etc. dr inż. Agnieszka Bołtuć Dynamiczny SQL Pozwala

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

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie bazy danych Jarosław Kuchta Projektowanie Aplikacji Internetowych Możliwości projektowe Relacyjna baza danych Obiektowa baza danych Relacyjno-obiektowa baza danych Inne rozwiązanie (np. XML)

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

Hurtownia Świętego Mikołaja projekt bazy danych

Hurtownia Świętego Mikołaja projekt bazy danych Aleksandra Kobusińska nr indeksu: 218366 Hurtownia Świętego Mikołaja projekt bazy danych Zaprezentowana poniżej baza jest częścią większego projektu bazy danych wykorzystywanej w krajowych oddziałach wiosek

Bardziej szczegółowo

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi 1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) Tworząc tabelę nie możemy określić, do którego pliku trafi, lecz możemy określić do której grupy plików trafi Zawsze istnieje grupa zawierająca

Bardziej szczegółowo

Wprowadzenie do kompilatorów

Wprowadzenie do kompilatorów Wprowadzenie do kompilatorów Czy ja kiedykolwiek napisz jaki kompilator? Jakie zadania ma do wykonania kompilator? Czy jzyk formalny to rodzaj jzyka programowania? Co to jest UML?, Czy ja kiedykolwiek

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

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

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

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

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

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

Internetowe bazy danych

Internetowe bazy danych Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 3 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Typy tabel MySQL domyślny MyISAM inne możliwe:

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

Bazy danych 5. Samozłaczenie SQL podstawy

Bazy danych 5. Samozłaczenie SQL podstawy Bazy danych 5. Samozłaczenie SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2007/08 Przykład kolejowy Tworzymy bazę danych zawierajac a (uproszczony) rozkład jazdy pociagów

Bardziej szczegółowo

Wykład 2. SQL 1 Structured Query Lenguage

Wykład 2. SQL 1 Structured Query Lenguage Wykład 2 SQL 1 Structured Query Lenguage SQL (Structured Query Language) Język zapytań do bazy danych. IBM lata osiemdziesiąte. Stosowany w systemach zarządzania bazami danych (DBMS); Oracle, Paradox,Access,

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

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

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

SQL Server 2005. Łukasz Łysik llysik@gmail.com. 21 października 2008

SQL Server 2005. Łukasz Łysik llysik@gmail.com. 21 października 2008 SQL Server 2005 Łukasz Łysik llysik@gmail.com 21 października 2008 Zakres prezentacji SQL Server Management Studio Transakcje Lock, deadlocks Procedury CLR Triggery Service Broker SQL Server Profiler SQL

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie do projektowania i wykorzystania baz danych Relacje Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR

Bardziej szczegółowo

SQL :: Data Definition Language

SQL :: Data Definition Language SQL :: Data Definition Language 1. Zaproponuj wydajną strukturę danych tabela) do przechowywania macierzy o dowolnych wymiarach w bazie danych. Propozycja struktury powinna zostać zapisana z wykorzystaniem

Bardziej szczegółowo

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

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach Indeksy dodatkowe struktury służące przyśpieszeniu dostępu do danych o użyciu indeksu podczas realizacji poleceń decyduje SZBD niektóre systemy bazodanowe automatycznie tworzą indeksy dla kolumn o wartościach

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

Instrukcja instalacji aplikacji Plansoft.org

Instrukcja instalacji aplikacji Plansoft.org plansoft.org PLANOWANIE ZAJĘĆ, REZERWOWANIE SAL I ZASOBÓW Instrukcja instalacji aplikacji Plansoft.org Oprogramowanie współpracuje z każdą wersją bazy danych Oracle, włączając darmową wersję XE Edition.

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

2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH PLAN WYKŁADU Bezpieczeństwo w języku SQL Użytkownicy Uprawnienia Role BAZY DANYCH Wykład 8 dr inż. Agnieszka Bołtuć OGRANICZENIA DOSTĘPU DO DANYCH Ograniczenie danych z tabeli dla określonego użytkownika

Bardziej szczegółowo

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność

Bardziej szczegółowo

Projektowanie systemów baz danych

Projektowanie systemów baz danych Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do

Bardziej szczegółowo

Bazy danych 10. SQL Widoki

Bazy danych 10. SQL Widoki Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela

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 2 Typy danych wbudowane użytkownika Tabele organizacja wiersza przechowywanie dużych danych automatyczne

Bardziej szczegółowo

P o d s t a w y j ę z y k a S Q L

P o d s t a w y j ę z y k a S Q L P o d s t a w y j ę z y k a S Q L Adam Cakudis IFP UAM Użytkownicy System informatyczny Aplikacja Aplikacja Aplikacja System bazy danych System zarządzania baz ą danych Schemat Baza danych K o n c e p

Bardziej szczegółowo

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy: wiczenie 2 Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Cel wiczenia: Zapoznanie si ze sposobami konstruowania tabel, powiza pomidzy tabelami oraz metodami manipulowania

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

3. Instalator rozpocznie proces instalacji

3. Instalator rozpocznie proces instalacji Uwaga! Podana instrukcja instalacji została przygotowana w oparciu o pliki instalacyjne SQL 2005 Express pobrany ze strony Microsoftu oraz oddzielny plik Service Pack 2 dedykowany pod SQL Express równie

Bardziej szczegółowo

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe.

Wprowadzenie do języka PL/SQL. Język PL/SQL Wprowadzenie. Struktura blokowa programu. Przykładowy program w PL/SQL. Zmienne rekordowe. Wprowadzenie do języka PL/SQL Język PL/SQL Wprowadzenie Język PL/SQL to rozszerzenie SQL o elementy programowania proceduralnego i obiektowego. PL/SQL umożliwia wykorzystanie: zmiennych i stałych struktur

Bardziej szczegółowo

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić

Bardziej szczegółowo

Archiwizacja. i odtwarzanie bazy

Archiwizacja. i odtwarzanie bazy Archiwizacja i odtwarzanie bazy O czym będzie Metody odzyskiwania danych w DB2 Dzienniki transakcji Metody tworzenia kopii zapasowych Metody odtwarzania Operacje rollforward Odbudowa indeksów Problemy...

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z

Bardziej szczegółowo

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

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678'); polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {

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

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Grupa A (LATARNIE) Imię i nazwisko: Numer albumu: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Nazwisko prowadzącego: 11: 12: Suma: Ocena: Zad. 1 (10 pkt) Dana jest relacja T. Podaj wynik poniższego zapytania (podaj

Bardziej szczegółowo

Bartosz Jachnik - Kino

Bartosz Jachnik - Kino Bartosz Jachnik - Kino I. Opis bazy Prezentowana baza danych stworzona została na potrzeby prowadzenia kina. Zawiera ona 8 tabel, które opisują filmy grane w danym okresie w kinie, wraz ze szczegółowym

Bardziej szczegółowo

Bazy danych i usługi sieciowe

Bazy danych i usługi sieciowe Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z

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

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

Bardziej szczegółowo

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika

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

Bazy danych Podstawy teoretyczne

Bazy danych Podstawy teoretyczne Pojcia podstawowe Baza Danych jest to zbiór danych o okrelonej strukturze zapisany w nieulotnej pamici, mogcy zaspokoi potrzeby wielu u!ytkowników korzystajcych z niego w sposóbs selektywny w dogodnym

Bardziej szczegółowo

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu Zbiór pytań nr 5 1 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu connect athos/musketeer grant select,insert,update,delete on athos.services to porthos with grant option; grant

Bardziej szczegółowo

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych Paweł Paduch paduch@tu.kielce.pl 06-04-2013 Rozdział 1 Wstęp Na dzisiejszych zajęciach zajmiemy się projektem bazy danych.

Bardziej szczegółowo

Instalacja MySQL. http://dev.mysql.com/downloads/mysql/5.0.html#downloads

Instalacja MySQL. http://dev.mysql.com/downloads/mysql/5.0.html#downloads Instalacja MySQL Baza MySQL tworzona jest przez Szwedzką firmę MySQL AB strona domowa projektu to: www.mysql.com Wersję bezpłatną (różniącą się od komercyjnej brakiem wsparcia technicznego, nośnika i podręcznika)

Bardziej szczegółowo

Elementy. języka SQL

Elementy. języka SQL Elementy języka SQL SQL SQL - Structured Query Language język czwartej generacji (4GL), opracowany w latach 70-tych przez IBM strukturalny język zapytań, przeznaczony do definiowania, wyszukiwania i administrowania

Bardziej szczegółowo

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas)

Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Dr Michał Tanaś(http://www.amu.edu.pl/~mtanas) Bazy danych podstawowe pojęcia Baza danych jest to zbiór danych zorganizowany zgodnie ze ściśle określonym modelem danych. Model danych to zbiór ścisłych

Bardziej szczegółowo