Zaawansowane bazy danych i hurtownie danych semestr I



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

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

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

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

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

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

PODSTAWY BAZ DANYCH 13. PL/SQL

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

PL/SQL. Zaawansowane tematy PL/SQL

Oracle PL/SQL. Paweł Rajba.

Język PL/SQL. Rozdział 2. Kursory

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

Procedury i funkcje składowane

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

Zaawansowane bazy danych i hurtownie danych semestr I

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

Deklarowanie kursora

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

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

15. Funkcje i procedury składowane PL/SQL

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

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

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów

1. ELEMENTY JĘZYKA PL/SQL

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

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

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

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

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

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

PL/SQL. Lidia Małkiewicz i Cezary Skubała

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

Indeksy. Indeks typu B drzewo

2 PL/SQL - podstawy Zmienne i stałe Operatory SQL w PL/SQL Instrukcje sterujące... 8

Technologie baz danych WYKŁAD 7: Wyjątki

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

11 marca Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

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

Tworzenie aplikacji bazodanowych

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Microsoft SQL Server Podstawy T-SQL

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

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

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

Pakiety podprogramów Dynamiczny SQL

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

Systemy GIS Tworzenie zapytań w bazach danych

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

Zaawansowane bazy danych i hurtownie danych Wydział Informatyki Politechnika Białostocka

Bazy danych 2 Laboratorium 2

Język PL/SQL Wprowadzenie

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

Podprogramy. Rozdział 11 Procedury i funkcje składowane

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

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

Język PL/SQL Wprowadzenie

Oracle11g: Programowanie w PL/SQL

Język SQL. Rozdział 2. Proste zapytania

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

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

Ćwiczenie 11 PL/SQL. Wprowadzenie do języka PL/SQL

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Tworzenie zapytań do Microsoft SQL Server

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Oracle11g: Wprowadzenie do SQL

Składowane procedury i funkcje

Oracle PL/SQL. Paweł Rajba.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

Wprowadzenie do języka SQL

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

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

SQL 4 Structured Query Lenguage

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

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

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

OLAP i hurtownie danych c.d.

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

Oracle PL/SQL. Paweł Rajba.

Ćwiczenia 2 IBM DB2 Data Studio

Przestrzenne bazy danych Podstawy języka SQL

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

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

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

Plan wykładu BAZY DANYCH II WYKŁAD 5. Kolekcje. Tablice asocjacyjne Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Oracle10g: Programowanie w PL/SQL

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

Spis treści. Przedmowa

Szkolenie Oracle SQL podstawy. Terminy lutego 2010 First Minute! 1100zł!

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

Paweł Rajba

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Cel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania

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

Transkrypt:

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 plan wykładów i zajęć projektowych 2. Sylabus do przedmiotu 3. http://aragorn.pb.bialystok.pl/~aonisko: Szczegółowy plan zajęć, materiały do wykładów i pracowni specjalistycznej, literatura, terminy zaliczeń Agnieszka Oniśko ZBDiHD-wprowadzenie 1/58 ZBDiHD-wprowadzenie 2/58 Plan przedmiotu 1. Proceduralny język SQL (ORACLE) Proceduralny język SQL (2) Optymalizacja zapytań w praktyce (1) Hurtownie danych (4) Integracja danych (1) Bazy danych typu NoSQL (2) Analiza danych w oparciu o modele sieci bayesowskich (3) Technologia Map/Reduce Apache Hadoop (2) ZBDiHD-wprowadzenie 3/58 ZBDiHD-wprowadzenie 4/58 2. Zaawansowane obiekty baz danych (ORACLE) 3. Optymalizacja zapytań w praktyce ZBDiHD-wprowadzenie 5/58 Pearson Education 2009 ZBDiHD-wprowadzenie 6/58

Hurtownie danych (4 wykłady) 4. Modele danych w hurtowniach danych Reklama_rodzaj 4. Wprowadzenie do hurtowni danych, modele danych 5. Architektura hurtowni danych 6. Operacje w hurtowniach danych (zaawansowany SQL) 7. Operacje w hurtowniach danych (funkcje analityczne) Grupa grupa_id nazwa Kategoria_vat kategoria_id podatek_vat wymiar Lokalizacja wymiar Produkt Województwo Miasto Sklep województwo_id nazwa l_mieszkańców miasto_id nazwa l_mieszkańców id_sklepu nazwa adres w_powierzchnia_k2 województwo_id miasto_id Produkt id_produktu nazwa kategoria_id grupa_id Sprzedaż id_produktu id_sklepu data l_sztuk wartość rodzaj_id scenariusz Reklama id_produktu rodzaj_id data koszty wymiar Czas Miesiąc Kwartał data kwartał_id nr_miesiąca nr_kwartału nazwa_miesiąca data_końca_kwart dni_wolne rok kwartał_id ZBDiHD-wprowadzenie 7/58 ZBDiHD-wprowadzenie 8/58 5. Architektura hurtowni danych 6. Operaje na hurtowniach danych Źródła danych Magazyny ODS E T L Niezależne hurtownie tematyczne Narzędzia użytkownika końcowego Wycinanie (Cube Slicing) Zwijanie (Roll-up) Rozwijanie (Drill-down) Obracanie (Pivot) Agregacje (Aggregation) Składowanie danych Przetwarzanie danych: Filtrowanie Klasyfikacja Agregacje Podsumowania Standaryzacja Załaduj do HT Oddzielny ETL dla każdej hurtowni tematycznej Narzędzia: Tworzenie zapytań Tworzenie raportów Aplikacje użytkownika Data Mining Wizualizacja Dostęp do danych jest złożony: dane w różnych hurtowniach tematycznych ZBDiHD-wprowadzenie 9/58 ZBDiHD-wprowadzenie 10/58 7. Operacje na hurtowniach danych: Funkcje analityczne 8. Integracja danych ORACLE SQL Loader SELECT TO_CHAR(orderdate, 'MONTH') as month, category, SUM(retail*quantity), SUM(SUM(retail*quantity)) OVER (PARTITION BY TO_CHAR(orderdate, 'MONTH')) as total_by_month FROM orderitems, books, orders WHERE orders.order#=orderitems.order# AND orderitems.isbn=books.isbn AND TO_CHAR(orderdate, 'YYYY') = 2005 GROUP BY TO_CHAR(orderdate, 'MONTH'), category ORDER BY TO_CHAR(orderdate, 'MONTH'), category; ZBDiHD-wprowadzenie 11/58 ZBDiHD-wprowadzenie 12/58

9-10. Bazy danych typu NoSQL (2 wykłady) 9. Bazy danych typu NoSQL 9. Bazy danych typu NoSQL 10.Bazy dokumentów (np. MongoDB) ZBDiHD-wprowadzenie 13/58 ZBDiHD-wprowadzenie 14/58 10. Bazy danych typu NoSQL: Bazy dokumentów 11-13. Analiza danych w oparciu o modele sieci bayesowskich (3 wykłady) 11.Konstruowanie modeli sieci bayesowskich 12.Uczenie modeli sieci bayesowskich z danych 13.Sieci bayesowskie: zastosowania ZBDiHD-wprowadzenie 15/58 ZBDiHD-wprowadzenie 16/58 11. Konstruowanie modeli sieci bayesowskich 12. Uczenie modeli sieci bayesowskich z danych ZBDiHD-wprowadzenie 17/58 ZBDiHD-wprowadzenie 18/58

13. Sieci bayesowskie: zastosowania 14-15. Metoda Map/Reduce, Apache Hadoop Systemy diagnostyczne i prognostyczne ZBDiHD-wprowadzenie 19/58 ZBDiHD-wprowadzenie 20/58 Relacyjny SZBD: ORACLE PL/SQL Pierwszy komercyjny SZBD (1977) Etapy rozwoju ORACLE 1978: wersja 1.0 (128kB) 1986: wersja z funkcjami bazy rozproszonej 1993: implementacja hurtowni danych, wersja pod Linux a 1997: wersja 8.x - relacyjno-obiektowa (Java) 2000: wersja ORACLE 9i 2003: wersja ORACLE 10g 2007: wersja ORACLE 11g 2011: wersja ORACLE 11g, Release 2 ZBDiHD-wprowadzenie 21/58 ZBDiHD-wprowadzenie 22/58 SQL (Structured Query Language) ORACLE: Języki programowania Definiowanie danych (DDL:Data Definition Language) Definiowanie zapytań (DQL: Data Query Language) Modyfikowanie danych (DML: Data Modification Language) Sterowanie danymi (DCL: Data Control Language) SQL PL/SQL Java ZBDiHD-wprowadzenie 23/58 ZBDiHD-wprowadzenie 24/58

PL/SQL (Procedural Language/ Structured Query Language) PL/SQL Language Reference PL/SQL: język o strukturze blokowej bloki nazwane bloki anonimowe bloki podrzędne źródło: http://docs.oracle.com/ ZBDiHD-wprowadzenie 25/58 ZBDiHD-wprowadzenie 26/58 Wykonanie bloku w PL/SQL Wykonanie bloku w PL/SQL w środowisku SQL*Plus [ deklaracje] [EXCEPTION obsługa wyjątków] RUN / START @ źródło: http://docs.oracle.com/ ZBDiHD-wprowadzenie 27/58 ZBDiHD-wprowadzenie 28/58 Struktura bloku w PL/SQL Obsługa SQL w PL/SQL zmienne, stałe, kursory, wyjątki zdefiniowane przez użytkownika instrukcje języka SQL instrukcje sterujące PL/SQL SELECT INSERT UPDATE DELETE COMMIT ROLLBACK SAVEPOINT działania, które mają być podjęte w razie wystąpienia błędów Funkcje, operatory i pseudokolumny dostępne w SQL ZBDiHD-wprowadzenie 29/58 ZBDiHD-wprowadzenie 30/58

Schemat bazy Zmienne i stałe ZMIENNA: identyfikator typ_danych [NOT NULL] [:=wart_pocz DEFAULTwart_pocz]; STAŁA: identyfikator CONSTANT typ_danych [:=wart_pocz DEFAULTwart_pocz]; v_zmienna NUMBER(5); v_nr NUMBER(3) NOT NULL := 10; c_stala CONSTANT NUMBER(2) DEFAULT 13; v_sprawdz BOOLEAN NOT NULL := TRUE; ZBDiHD-wprowadzenie 31/58 ZBDiHD-wprowadzenie 32/58 Typy danych Typy danych Typy danych SQL Number() Varchar2() Date.. Typy danych PL/SQL Boolean %TYPE %ROWTYPE.. PL/SQL data types SQL data types zmienna%type tabela.kolumna%type tabela%rowtype v_imie VARCHAR2(15); v_moje_imie v_imie%type; v_cena books.retail%type; ksiazki_rekord books%rowtype; ZBDiHD-wprowadzenie 33/58 ZBDiHD-wprowadzenie 34/58 Blok PL/SQL: Przykład Reguły składniowe w PL/SQL v_data DATE NOT NULL := SYSDATE; v_data_str VARCHAR2(10); v_data_str := v_data; -- konwersja niejawna v_data_str := TO_CHAR(v_data); /* konwersja jawna */ Instrukcje mogą się ciągnąć przez kilka linii (słowa kluczowe!) Jednostki leksykalne mogą być separowane spacjami Literały znakowe i datowe muszą być ujęte w pojedynczy cudzysłów Liczby mogą być reprezentowane przez wartości proste lub notację wykładniczą (np. 2E5 = 200000) ZBDiHD-wprowadzenie 35/58 ZBDiHD-wprowadzenie 36/58

Instrukcja warunkowa Instrukcja warunkowa: Przykład IF warunek THEN instrukcja-1; IF warunek-1 THEN instrukcja-1; ELSIF warunek-2 THEN instrukcja-2; ELSE instrukcja-3; IF warunek THEN instrukcja-1; ELSE instrukcja-2; ZBDiHD-wprowadzenie 37/58... IF v_cena > 100 THEN RETURN (v_cena*1.1); ELSIF v_cena >= 50 THEN RETURN (v_cena*1.2); ELSE RETURN (v_cena*1.25);. ZBDiHD-wprowadzenie 38/58 Instrukcja iteracyjna LOOP LOOP instrukcje; EXIT [WHEN warunek]; WHILE warunek LOOP instrukcje; FOR licznik IN [REVERSE] min..max LOOP instrukcje; Instrukcja FOR: Przykład v_licznik NUMBER(1) :=0; v_ostatni NUMBER(1); v_min NUMBER(1) := 1; v_max NUMBER(1) := 5; FOR i IN v_min..v_max LOOP v_licznik := v_licznik + 1; v_ostatni := i; dbms_output.put_line( Ostatni indeks: TO_CHAR(v_ostatni). Liczba petli: TO_CHAR(v_licznik)); ZBDiHD-wprowadzenie 39/58 ZBDiHD-wprowadzenie 40/58 Przetwarzanie wyników zapytań SELECT lista INTO nazwa_zmiennej nazwa_rekordu FROM tabela WHERE warunek; SELECT MAX(retail) INTO v_max FROM books; Kursory niejawne Pozwalają na analizowanie i wykonywanie komend SQL PL/SQL zarządza automatycznie kursorem niejawnym Kursory niejawne: deklarowane dla wszystkich instrukcji DML oraz SELECT ZBDiHD-wprowadzenie 41/58 ZBDiHD-wprowadzenie 42/58

Atrybuty kursora SQL SQL%ROWCOUNT SQL%FOUND SQL%NOTFOUND SQL%ISOPEN Liczba wierszy, których dotyczyła ostatnia instrukcja SQL Atrybut logiczny, który przyjmuje wartość TRUE, gdy ostatnia instrukcja dotyczyła jednego lub więcej wierszy Atrybut logiczny, który przyjmuje wartość TRUE, gdy ostatnia instrukcja dotyczyła zerowej liczby wierszy Zawsze przyjmuje wartość FALSE ponieważ PL/SQL zamyka kursory natychmiast po ich wykonaniu Atrybuty kursorów niejawnych PROCEDURE KASUJ_KSIAZKE (p_isbn books.isbn%type) IS DELETE FROM books WHERE isbn = p_isbn; IF SQL%NOTFOUND THEN dbms_output.put_line ( Nie znaleziono rekordu ); ZBDiHD-wprowadzenie 43/58 ZBDiHD-wprowadzenie 44/58 Kursory jawne: Deklaracja Kursory jawne CURSOR nazwa_kursora [(parametr [, parametr] )] IS instrukcja_select; parametr ::= nazwa_parametru typ danych [{:= DEFAULT wyrażenie}].. ; OPEN nazwa_kursora [(parametr [, parametr]...)]; CURSOR kur_books (p_cost NUMBER(5)) IS SELECT * FROM books WHERE cost <= p_cost; FETCH nazwa_kursora INTO zmienna [, zmienna...]; CLOSE nazwa_kursora; ZBDiHD-wprowadzenie 45/58 ZBDiHD-wprowadzenie 46/58 Sterowanie kursorami jawnymi Atrybuty kursorów niejawnych NIE OPEN FETCH PUSTY? TAK CLOSE %ROWCOUNT %FOUND %NOTFOUND Liczba wierszy, sprawdzonych w kursorze w danym momencie Atrybut logiczny, który przyjmuje wartość TRUE, jeśli instrukcja FETCH zwróci wiersz Atrybut logiczny, który przyjmuje wartość TRUE, jeśli ostatnia instrukcja FETCH nie zwrócila żadnego wiersza %ISOPEN Atrybut logiczny, który przyjmuje wartość TRUE, jeśli kursor jest otwarty ZBDiHD-wprowadzenie 47/58 ZBDiHD-wprowadzenie 48/58

CURSOR kur_books(p_pubid publisher.pubid%type) IS SELECT * FROM books WHERE pubid = p_pubid; k_record books%rowtype; v_cost books.cost%type := 0; OPEN kur_books; LOOP FETCH kur_books(1) INTO k_record; IF kur_books%notfound THEN EXIT; v_cost := v_cost + k_record.cost; -- kur_books%rowcount???; dbms_output.put_line(v_cost); CLOSE kur_books; ZBDiHD-wprowadzenie 49/58 Pęta kursorowa FOR FOR nazwa_rekordu IN nazwa_kursora LOOP instrukcja-1; instrukcja-2;. Niejawne instrukcje OPEN, FETCH, CLOSE zmienna nazwa_rekordu -- zadeklarowana niejawnie ZBDiHD-wprowadzenie 50/58 Kursory jawne: Przykład CURSOR k_order (p_zam orders.order#%type) IS SELECT * FROM orderitems WHERE order# = p_zam; FOR i IN k_order(1) LOOP dbms_output.put_line(i.isbn); / Kursor w pętli FOR CURSOR a_cursor IS SELECT * FROM customers; FOR i IN a_cursor LOOP dbms_output.put_line(i.lastname); FOR i IN (SELECT * FROM customers) LOOP dbms_output.put_line(i.lastname); ZBDiHD-wprowadzenie 51/58 ZBDiHD-wprowadzenie 52/58 Kursor w pętli FOR -- Inefficient, calls function for every row FOR item IN (SELECT DISTINCT(SQRT(department_id)) x FROM employees) LOOP DBMS_OUTPUT.PUT_LINE(item.x); / źródło: http://docs.oracle.com/ ZBDiHD-wprowadzenie 53/58 Kursor w pętli FOR -- Efficient, only calls function once -- for each distinct value. FOR item IN ( SELECT SQRT(department_id) x FROM (SELECT DISTINCT department_id FROM employees) ) LOOP DBMS_OUTPUT.PUT_LINE(item.x); / źródło: http://docs.oracle.com/ ZBDiHD-wprowadzenie 54/58

Polecenie FORALL TYPE NumList IS VARRAY(20) OF NUMBER; -- department numbers: depts NumList := NumList(10, 30, 70); FORALL i IN depts.first..depts.last DELETE FROM employees_temp WHERE department_id = depts(i); COMMIT; / Użycie klauzuli WHERE CURRENT OF CURSOR k_cursor(v_cost books.cost%type) IS SELECT cost FROM books WHERE cost > v_cost FOR UPDATE; FOR i IN k_cursor(40) LOOP UPDATE books SET cost = cost* 1.1 WHERE CURRENT OF k_cursor; COMMIT; / ZBDiHD-wprowadzenie 55/58 ZBDiHD-wprowadzenie 56/58 Użycie klauzuli WHERE CURRENT OF Kursory: Podsumowanie Używając kursorów można aktualizować lub usuwać rekordy Klauzula FOR UPDATE blokuje wiersze Klauzula WHERE CURRENT OF odwołuje się do bieżącego rekordu z kursora jawnego Nie wolno zatwierdzać instrukcji z kursora jawnego, jeżeli użyta jest klauzula FOR UPDATE Kursory niejawne używane dla wszystkich instrukcji DML oraz zapytań zwracających jeden wiersz Kursory jawne używane dla zapytań zwracających zero lub więcej wierszy ZBDiHD-wprowadzenie 57/58 ZBDiHD-wprowadzenie 58/58