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

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

PL/SQL. Zaawansowane tematy PL/SQL

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

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

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

Oracle PL/SQL. Paweł Rajba.

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

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

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

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

Deklarowanie kursora

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

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

PODSTAWY BAZ DANYCH 13. PL/SQL

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

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

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

Bloki anonimowe w PL/SQL

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

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

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

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

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

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

Bloki anonimowe w PL/SQL

Zaawansowane bazy danych i hurtownie danych semestr I

Kursory. A. Pankowska 1

Administracja i programowanie pod Microsoft SQL Server 2000

Procedury i funkcje składowane

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Paweł Rajba

1. ELEMENTY JĘZYKA PL/SQL

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

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

Oracle11g: Programowanie w PL/SQL

Oracle PL/SQL. Paweł Rajba.

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

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

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

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

Oracle11g: Wprowadzenie do SQL

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

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

Indeksy. Indeks typu B drzewo

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

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

Oracle10g: Programowanie w PL/SQL

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

15. Funkcje i procedury składowane PL/SQL

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

Ćwiczenia 2 IBM DB2 Data Studio

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Pakiety podprogramów Dynamiczny SQL

Podzapytania do tabel W miejscu w którym możemy użyć nazwy tabeli, możemy użyć podzapytania

Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

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

Technologie baz danych WYKŁAD 7: Wyjątki

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

Zarzadzanie transakcjami. Transakcje

Materiały do laboratorium MS ACCESS BASIC

Język PL/SQL. Rozdział 3. Obsługa błędów wykonania Wyjątki predefiniowane i użytkownika, zgłaszanie i obsługa wyjątków.

1. Wyzwalacze BD (ang. triggers)

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

Oracle PL/SQL. Paweł Rajba.

Podzapytania. SELECT atrybut_1, atrybut_2,... FROM relacja WHERE atrybut_n operator (SELECT atrybut_1, FROM relacja WHERE warunek

Podprogramy. Rozdział 11 Procedury i funkcje składowane

KARTA MODUŁU KSZTAŁCENIA

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

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

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

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

BAZY DANYCH W APLIKACJACH SIECIOWYCH

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

SQL 4 Structured Query Lenguage

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

Autor: Joanna Karwowska

Systemy GIS Tworzenie zapytań w bazach danych

PL/SQL. Zaawansowane tematy PL/SQL

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

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

Język PL/SQL Pakiety podprogramów

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

Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;

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

Celem ćwiczenia jest wprowadzeniem do programowaniu w języku PL/SQL. Język PL/SQL umoŝliwia tworzenie programów, przetwarzających dane w bazie danych.

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Zaawansowane bazy danych i hurtownie danych semestr I

Tabele wykorzystywane w przykładach

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.

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

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

SQL do zaawansowanych analiz danych część 1.

Składowane procedury i funkcje

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Zarządzanie obiektami bazy danych Oracle11g

Język PL/SQL Wprowadzenie

Transkrypt:

Plan wykładu Kursory: deklaracja, otwieranie, pobieranie danych, zamykanie Kursory: atrybuty Kursory: pętle, rekordy Kursory z parametrami BAZY DANYCH II WYKŁAD 4 dr inż. Agnieszka Bołtuć Co to jest kursor? Udostępnia podzbiór danych zdefiniowanych przez zapytanie, Dane pobierane są do pamięci i kursor jest do niej wskaźnikiem, Otwarcie kursora to pobranie części bieżących danych, co oznacza, że zmiana, dodanie lub usunięcie danych po jego otwarciu nie będzie miało odzwierciedlenia w zbiorze który zwrócił kursor. Rodzaje kursorów Bezpośrednie (Explicit) deklarowane i kontrolowane przez programistę, deklarowane w instrukcji SELECT (najczęściej takich, które zwracają więcej niż jeden wiersz) w części deklaracyjnej, Pośrednie (Implicit) kontrolowane przez PL/SQL, powstają przy każdym uruchomieniu poleceń z zakresu DML oraz instrukcji SELECT INTO, Zmienne kursorowe typ, który można powiązać z innymi zapytaniami w jednym bloku, Podzapytania kursorowe umieszczanie kursorów w instrukcjach języka SQL. 1

Przetwarzanie kursorów Deklaracja kursorów DEKLARACJA OTWIERANIE POBIERANIE DANYCH ZAMYKANIE Odbywa się w części deklaracyjnej, obejmuje nadanie nazwy oraz definicję zapytania SELECT, CURSOR nazwa IS zapytanie SELECT; gdzie nazwa to dowolny identyfikator PL/SQL, zaś zapytanie to dowolna instrukcja SELECT oczywiście bez klauzuli INTO. Deklaracja kursorów - przykłady CURSOR c_employees IS SELECT employee_id, last_name, salary FROM employees WHERE job_id= IT_PROG ; CURSOR c_employees_1 IS SELECT * FROM employees WHERE department_id=100; Otwieranie kursorów OPEN nazwa; Kursory otwiera się w sekcji wykonawczej lub wyjątków, Instrukcja ta związana jest z: alokacją pamięci, przetworzeniem zapytania, zapisaniem wierszy w obszarze kontekstu i przygotowaniem zbioru wynikowego, W danym momencie aktywny jest tylko jeden rekord, po otwarciu jest to pierwszy rekord, Kursor jest otwierany także wtedy, gdy zapytanie nie zwróci żadnego rekordu. 2

Otwieranie kursorów - przykłady CURSOR c_employees IS SELECT employee_id, last_name, salary FROM employees WHERE job_id= IT_PROG ; Pobieranie rekordów Zanim użyjemy rekordów musimy je pobrać z obszaru kontekstu do zmiennej, Służy do tego instrukcja FETCH, która operuje rekord po rekordzie, FETCH nazwa INTO zmienne rekord; gdzie nazwa to nazwa otwartego kursora, zaś zmienne to nazwy zmiennych odpowiadających typom kolumn zbioru wynikowego bądź nazwa rekordu. Pobieranie rekordów - przykłady Zamykanie kursorów FETCH c_employees INTO v_emp_id; FETCH c_employees INTO v_emp_id, v_last_name; v_emp employees%rowtype; FETCH c_employees INTO v_emp; CLOSE nazwa; Powoduje zamknięcie kursora i zwolnienie pamięci, Kursor może być otwarty ponownie, Wyjątek invalid cursor jest wywoływany kiedy chcemy zamknąć kursor, który nie jest otwarty, bądź gdy chcemy pobrać dane z kursora już zamkniętego. 3

Atrybuty kursorów %FOUND sprawdza czy instrukcja FETCH zwróciła rekordy, zwraca wartość logiczną TRUE jeśli tak lub FALSE jeśli nie, %ISOPEN sprawdza czy kursor jest już otwarty, jeśli TRUE to tak, jeśli FALSE to nie, %NOTFOUND działa odwrotnie do %FOUND, %ROWCOUNT sprawdza liczbę wierszy pobranych z kursora, Atrybuty - przykłady IF NOT c_employees%isopen THEN OPEN c_employees END IF; FETCH c_employees INTO v_1,v_2,v_3; EXIT WHEN c_employees%notfound; v_licznik:= c_employees%rowcount; Pętla prosta Pętla WHILE FETCH c_employees INTO v_1; EXIT WHEN c_employees%notfound; FETCH c_employees INTO v_1; WHILE c_employees%found FETCH c_employees INTO v_1; 4

Pobieranie danych z kursora do rekordu r_employees employees%rowtype; CURSOR c_employees IS SELECT * FROM employees; FETCH c_employees INTO r_employees; EXIT WHEN c_employees%notfound; Pętla FOR Nie wymagają jawnych instrukcji OPEN, FETCH, CLOSE, Za pełną obsługę kursora odpowiada PL/SQL, Pętla używa zmiennej, której nie trzeba deklarować w części deklaracyjnej, FOR zmienna_rekordowa IN kursor Instrukcje; FOR r_employees IN c_employees DBMS_OUTPUT.PUT_LINE(r_employees.last_ name r_employees.salary); 5

FOR z użyciem podzapytań Kursory z parametrami FOR r_employees IN (SELECT * FROM employees) DBMS_OUTPUT.PUT_LINE(r_employees.last_nam e r_employees.salary); CURSOR nazwa [(lista_parametrow)] IS zapytanie SELECT; [(nazwa_parametru typ, )] OPEN nazwa [(wartości_parametrów)]; Lista parametrów jest opcjonalna, Są to dowolne prawidłowe parametry używane do wykonania zapytania, Kursory z parametrami - przykład CURSOR c_employees (i_id NUMBER) IS SELECT * FROM employees WHERE employee_id>i_id; OPEN c_employees(10); Klauzula FOR UPDATE CURSOR nazwa [(lista_parametrów)] IS zapytanie SELECT [FOR UPDATE [OF (lista_kolumn) [NOWAIT]]; Służy do blokowania rekordów po otwarciu kursora, Rekordy są dostępne dla innych sesji, ale tylko w trybie do odczytu. 6

Klauzula FOR UPDATE Klauzula FOR UPDATE Co gwarantuje klauzula FOR UPDATE: Dane przeglądane w kursorze nie zostaną zablokowane przez żadną inną sesję, Dane są spójne z obszarem kontekstu, Gdy użyjemy NOWAIT, przy otwieraniu kursora program zostanie zamknięty, jeśli nie może zająć blokady na wyłączność. CURSOR c_employees (i_id NUMBER) IS SELECT * FROM employees WHERE employee_id>i_id FOR UPDATE salary NOWAIT; WYKORZYSTANA LITERATURA J. Price, Oracle Database 11g i SQL. Programowanie. Helion, 2009. S. Urman, R. Hardman, M. McLaughlin, Oracle Database 10g. Programowanie w języku PL/SQL. Helion, 2008. www.oracle.com 7