Zaawansowane bazy danych i hurtownie danych semestr I



Podobne dokumenty
Zaawansowane bazy danych i hurtownie danych semestr I, st. niestacjonarne

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Technologie baz danych WYKŁAD 7: Wyjątki

Bazy danych. Plan wykładu. Złczenia tabel. Perspektywy cd. Wykład 9: Programowanie aplikacji baz danych po stronie serwera. Sekwencje Wyzwalacze

Oracle PL/SQL. Paweł Rajba.

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Język PL/SQL Procedury i funkcje składowane

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

1. Wyzwalacze BD (ang. triggers)

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

PODSTAWY BAZ DANYCH 13. PL/SQL

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

BAZY DANYCH W APLIKACJACH SIECIOWYCH

Bazy danych, 4. wiczenia

Pakiety podprogramów Dynamiczny SQL

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Procedury i funkcje składowane

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

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

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Język PL/SQL. Rozdział 6. Procedury wyzwalane

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

1 Wprowadzenie do bloków nazwanych 1. 2 Parametry 2. 3 Procedury i funkcje 3. 4 Pakiety 6. 5 Podsumowanie Źródła 10

Wyzwalacze TWORZENIE WYZWALACZY

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

Oracle PL/SQL. Paweł Rajba.

Język PL/SQL Pakiety podprogramów

Plan wykładu BAZY DANYCH II WYKŁAD 8. Wyzwalacze. Wyzwalacze

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

15. Funkcje i procedury składowane PL/SQL

Baza danych inside. Biologiczne Aplikacje Baz Danych

Oracle11g: Programowanie w PL/SQL

Bloki anonimowe w PL/SQL

Podprogramy. Rozdział 11 Procedury i funkcje składowane

PL/SQL. Zaawansowane tematy PL/SQL

Język PL/SQL. Rozdział 4. Procedury i funkcje składowane

Ćwiczenie 13 PL/SQL. Język PL/SQL procedury, funkcje, pakiety, wyzwalacze

Cele. Definiowanie wyzwalaczy

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

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

SQL 4 Structured Query Lenguage

Składowane procedury i funkcje

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

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

PL/SQL. Zaawansowane tematy PL/SQL

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Oracle10g: Programowanie w PL/SQL

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

BAZA DANYCH SIECI HOTELI

Procedury Funkcje Pakiety. Tworzenie procedury

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Hurtownia Świętego Mikołaja projekt bazy danych

Język SQL. Rozdział 8. Język manipulowania danymi DML

Plan wykładu BAZY DANYCH II WYKŁAD 7. Pakiety. Zalety pakietów

Uprawnienia, role, synonimy

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Administracja i programowanie pod Microsoft SQL Server 2000

Oracle11g: Wprowadzenie do SQL

Indeksy. Indeks typu B drzewo

CREATE SEQUENCE [schemat_użytkownika.]nazwa_sekwencji zestaw_parametrów_sekwencji ;

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

Paweł Rajba

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

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Ćwiczenie 13 PL/SQL. Język PL/SQL procedury, funkcje, pakiety, wyzwalacze

Zaawansowane bazy danych i hurtownie danych semestr I

1 Projekt fizyczny 1. 3 Perspektywy słownika danych Źródła 12

Wyzwalacze (triggery) Przykład

Aspekty aktywne baz danych

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

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

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

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

SQL :: Data Definition Language

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Systemy GIS Tworzenie zapytań w bazach danych

Oracle PL/SQL. Paweł Rajba.

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

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

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

CREATE TABLE autorzy ( id_autora SERIAL PRIMARY KEY, imie TEXT, nazwisko TEXT );

SQL język zapytań (query language) cz.1

Oracle PL/SQL. Paweł Rajba.

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

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

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

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

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

Transkrypt:

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 powiązanych procedur i funkcji WYKŁAD 2: Zaawansowane obiekty baz danych: procedury, pakiety, wyzwalacze Agnieszka Oniśko ZBDiHD-2-podprogramy 1/48 ZBDiHD-2-podprogramy 2/48 Składniki podprogramu Podprogramy: Procedura Nagłówek podprogramu [deklaracje] [EXCEPTION obsługa wyjątków] [] PROCEDURE nazwa_procedury [ (parametr [, parametr ] )] IS [deklaracje] [EXCEPTIONS obsługa wyjątków] END [nazwa_procedury]; ZBDiHD-2-podprogramy 3/48 ZBDiHD-2-podprogramy 4/48 Podprogramy: Funkcja [] FUNCTION nazwa_funkcji [(parametr [, parametr ] )] RETURN nazwa_typu IS [deklaracje] [EXCEPTIONS obsługa wyjątków] END [nazwa_funkcji]; Tryby parametrów podprogramów Środowisko Argument IN Argument OUT Argument IN OUT [deklaracje] [EXCEPTION obsługa wyjątków] ZBDiHD-2-podprogramy 5/48 ZBDiHD-2-podprogramy 6/48

Parametry w podprogramach parametr [IN OUT [NOCOPY] IN OUT [NOCOPY]] typ_danych [:= DEFAULT wyraŝenie] Procedura: Przykład PROCEDURE mod_cene (p_isbn books.isbn%type, p_wartosc NUMBER) IS IN OUT IN OUT Parametry przekazywane przez wartość Parametry przekazywane przez referencję UPDATE books SET retail = retail + p_wartosc WHERE isbn = p_isbn; END mod_cene; ZBDiHD-2-podprogramy 7/48 ZBDiHD-2-podprogramy 8/48 Funkcja: Przykład FUNCTION VAT(p_isbn books.isbn%type) RETURN NUMBER IS v_cena books.retail%type; SELECT retail INTO v_cena FROM books WHERE isbn = p_isbn; Wywoływanie procedur/funkcji EXECUTE nazwa_procedury[(parametry)] EXECUTE zmienna:= nazwa_funkcji[(parametry)] RETURN (v_cena*0.07); END VAT; ZBDiHD-2-podprogramy 9/48 ZBDiHD-2-podprogramy 10/48 Wywoływanie procedur/funkcji: Przykład Użycie funkcji w instrukcji SQL EXECUTE mod_cene(1,5); VARIABLE g_vat NUMBER EXECUTE :g_vat := VAT(1); PRINT g_vat SELECT title, retail, VAT(1) FROM books WHERE isbn = 1; ZBDiHD-2-podprogramy 11/48 ZBDiHD-2-podprogramy 12/48

Błędy Błędy bloków anonimowych pojawiają się na standardowym wyjściu Błędy zapamiętanych procedur są zapisywane w tabeli USER_ERRORS słownika danych SHOW ERRORS Procedury/funkcje: Podsumowanie Funkcje zdefiniowane przez użytkownika mogą być stosowane w instrukcjach SQL (procedury nie!) Funkcja nie może zawierać instrukcji DML Typy danych używane w funkcji muszą być wewnętrzynymi typami serwera a nie typami danych PL/SQL SELECT * FROM user_errors; ZBDiHD-2-podprogramy 13/48 ZBDiHD-2-podprogramy 14/48 Pakiety Specyfikacja pakietu Aplikacja Pakiet Specyfikacja Baza danych CREATE [OR REPLACE] PACKAGE nazwa_pakietu AS deklaracje publiczne specyfikacje podprogramów Ciało pakietu ZBDiHD-2-podprogramy 15/48 ZBDiHD-2-podprogramy 16/48 Tworzenie ciała pakietu Pakiety: Przykład CREATE [ OR REPLACE ] PACKAGE BODY nazwa_pakietu AS deklaracje prywatne definicje podprogramów [ instrukcje inicjalizujące pakietu] PACKAGE p_zamowienia AS PROCEDURE usun_zamowienie (v_id orders.order#%type); PROCEDURE dodaj_pozycje (v_id orderitems.order#%type, v_isbn orderitems.isbn%type, v_ilosc orderitems.quantity%type); ZBDiHD-2-podprogramy 17/48 ZBDiHD-2-podprogramy 18/48

Pakiety: Przykład CREATE PACKAGE BODY p_zamowienia AS PROCEDURE usun_zamowienie (v_id orders.order#%type) IS DELETE FROM orderitems WHERE order# = v_id; DELETE FROM orders WHERE order# = v_id; Pakiety: Przykład PROCEDURE dodaj_pozycje (v_id orderitems.order#%type, v_isbn orderitems.isbn%type, v_ilosc orderitems.quantity%type); IS INSERT INTO orderitmes VALUES(v_id, v_isbn, SYSDATE, v_ilosc); -- koniec pakietu ZBDiHD-2-podprogramy 19/48 ZBDiHD-2-podprogramy 20/48 Pakiety: Wywołanie Pakiety: Zalety korzystania EXECUTE p_zamowienia.usun_zamownienie(5); EXECUTE p_zamowienia.dodaj_pozycje(,,,); Poprawa zarządzania procedurami i funkcjami Poprawa bezpieczeństwa (uprawnienia do pakietu!) Poprawa efektywności ZBDiHD-2-podprogramy 21/48 ZBDiHD-2-podprogramy 22/48 Pakiety wbudowane Wyzwalacze DBMS_ALERT DBMS_OUTPUT DBMS_PIPE UTL_FILE UTL_HTTP DBMS_SQL DBMS_DEBUG DBMS_DDL DBMS _RANDOM DBMS_SESSION Procedury składowane w bazie danych, automatycznie uruchamiane przez system przy wystąpieniu określonego zdarzenia w bazie danych SET SERVEROUTPUT ON ZBDiHD-2-podprogramy 23/48 ZBDiHD-2-podprogramy 24/48

Wyzwalacze (liczba wykonanych akcji) Tworzenie wyzwalaczy Wyzwalacze wierszowe: akcja wykonywana jest tyle razy, ile jest wierszy, których dotyczy polecenie aktywujące wyzwalacz Wyzwalacze poleceniowe: akcja wykonywana jest tylko jeden raz, niezależnie od ilości wierszy, których dotyczy polecenie aktywujące wyzwalacz http://docs.oracle.com/cd/b19306_01/server.102/b14220/triggers.htm ZBDiHD-2-podprogramy 25/48 ZBDiHD-2-podprogramy 26/48 Wyzwalacze wywoływane kaskadowo Tworzenie wyzwalaczy http://docs.oracle.com/cd/b19306_01/server.102/b14220/triggers.htm ZBDiHD-2-podprogramy 27/48 ZBDiHD-2-podprogramy 28/48 Tworzenie wyzwalaczy TRIGGER nazwa_wyzwalacza { BEFORE AFTER INSTEAD OF } { DELETE INSERT UPDATE [ OF kolumna, [, kolumna ] ] } [ OR { DELETE INSERT UPDATE [ OF kolumna, [, kolumna ] ] } ] ON tabela [ FOR EACH ROW [ WHEN (warunek) ] ] Rodzaje wyzwalaczy (czas wykonania) Wyzwalacze przeprowadzające określoną akcję przed wykonaniem polecenia, które aktywizuje wyzwalacz Wyzwalacze przeprowadzające akcję po wykonaniu polecenia, które aktywizuje wyzwalacz blok pl/sql ZBDiHD-2-podprogramy 29/48 ZBDiHD-2-podprogramy 30/48

Stare i nowe wartości wierszy Modyfikowanie wartości INSERT new UPDATE new, old BEFORE Można zmieniać wartości new DELETE old AFTER Nie można zmieniać wartości new :identyfikator.kolumna ZBDiHD-2-podprogramy 31/48 ZBDiHD-2-podprogramy 32/48 Włączanie i wyłączanie wyzwalaczy ALTER TRIGGER nazwa_wyzwalacza { ENABLE DISABLE} ALTER TRIGGER nazwa_wyzw ENABLE; ALTER TRIGGER nazwa_wyzw DISABLE; Wyzwalacze systemowe BEFORE LOGON BEFORE CREATE BEFORE ALTER BEFORE DROP BEFORE AUDIT BEFORE NOAUDIT BEFORE DDL BEFORE GRANT BEFORE RENAME BEFORE REVOKE AFTER LOGON AFTER CREATE AFTER ALTER AFTER DROP AFTER AUDIT AFTER NOAUDIT AFTER DDL AFTER GRANT AFTER RENAME AFTER REVOKE ZBDiHD-2-podprogramy 33/48 ZBDiHD-2-podprogramy 34/48 Wyzwalacze systemowe Wykrywanie rodzaju instrukcji DML TRIGGER trig_logowanie AFTER LOGON ON SCHEMA INSERT INTO komunikat(str1) VALUES( zalogowano sie SYSDATE); ZBDiHD-2-podprogramy 35/48 Polecenie-1 DML Polecenie-2 DML INSERTING UPDATING DELETING Wyzwalacz ZBDiHD-2-podprogramy 36/48

Wykrywanie rodzaju instrukcji DML TRIGGER trig_ceny BEFORE INSERT OR UPDATE OF retail ON books FOR EACH ROW WHEN (new.retail < 100) DECLARE v_akcja VARCHAR2(20); IF :new.retail > :old.retail*1.1 THEN :new.retail := :old.retail*1.1; END IF; Przykład - cd. IF INSERTING THEN v_akcja := wstawiono wiersz ; ELSE v_akcja := zaktualizowano wiersz ; END IF; INSERT INTO komunikat VALUES( ksiazka, SYSDATE, v_akcja); ZBDiHD-2-podprogramy 37/48 ZBDiHD-2-podprogramy 38/48 Rodzaje wyzwalaczy Sekwencje Wyzwalacze reagujące na instrukcje DML: BEFORE, AFTER (operują na tabelach) INSTEAD OF (operują na perspektywach) Obiekty bazy danych używane do generowania unikatowych wartości (zwykle na potrzeby kluczy głównych) Dostęp do kolejnych wartości umożliwiają pseudokolumny NEXTVAL (zwraca wartość zwiększoną w kolejnym kroku) CURRVAL (zwraca bieżacą wartość) ZBDiHD-2-podprogramy 39/48 ZBDiHD-2-podprogramy 40/48 Sekwencje Sekwencje: Przykład CREATE SEQUENCE nazwa_sekwencji [ INCREMENT BY wartość START WITH wartość {MAXVALUE wartość NOMAXVALUE} {MINVALUE wartość NOMINVALUE } {CYCLE NOCYCLE } ] CREATE SEQUENCE sekw_2 INCREMENT BY 2 START WITH 100 MAXVALUE 120 CYCLE; ZBDiHD-2-podprogramy 41/48 ZBDiHD-2-podprogramy 42/48

Sekwencje: Przykład Sekwencje FOR i IN 1..5 LOOP INSERT INTO komunikat(nr) VALUES(sekw_2.NEXTVAL); END LOOP; ALTER SEQUENCE nazwa_sekwencji [ INCREMENT BY wartość {MAXVALUE wartość NOMAXVALUE} {MINVALUE wartość NOMINVALUE} {CYCLE NOCYCLE } ] ZBDiHD-2-podprogramy 43/48 ZBDiHD-2-podprogramy 44/48 Sekwencje Mogą być używane: w klauzuli SET polecenia UPDATE najbardziej zewnętrznym podzapytaniu w listach wartości polecenia INSERT Nie mogą być używane: w podzapytaniach w poleceniuselect z klauzulamiorder BY, GROUP BY, CONNECT BY, HAVING z kwantyfikatorem DISTINCT Synonimy: Zastosowanie Synonimy umożliwiają nadawanie alternatywnych nazw dla niektórych obiektów bazy danych Łatwiejsze wprowadzanie poleceń poprzez skrócenie nazwy obiektów znajdujących się w innych schematach tej samej bazy danych lub innych bazach Odizolowanie aplikacji i użytkowników od zmian zachodzących w konstrukcji bazy danych ZBDiHD-2-podprogramy 45/48 ZBDiHD-2-podprogramy 46/48 Synonimy Synonimy: Przykład CREATE [PUBLIC] SYNONYM nazwa_synonimu FOR obiekt; Synonimy prywatne: tworzone dla określonej grupy użytkowników CREATE PUBLIC SYNONYM s_ksiazka FOR books; RENAME stara_nazwa TO nowa_nazwa; Synonimy publiczne: tworzone dla wszystkich użytkowników ZBDiHD-2-podprogramy 47/48 ZBDiHD-2-podprogramy 48/48