Oracle PL/SQL. Paweł Rajba.

Podobne dokumenty
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

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

Deklarowanie kursora

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

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

PL/SQL. Zaawansowane tematy PL/SQL

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

Administracja i programowanie pod Microsoft SQL Server 2000

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

Paweł Rajba

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

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

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

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

PODSTAWY BAZ DANYCH 13. PL/SQL

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

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

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

Bloki anonimowe w PL/SQL

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

Kursory. A. Pankowska 1

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

Procedury i funkcje składowane

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

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba.

15. Funkcje i procedury składowane PL/SQL

Bloki anonimowe w PL/SQL

Zaawansowane bazy danych i hurtownie danych semestr I

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

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

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

1. ELEMENTY JĘZYKA PL/SQL

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

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

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

Oracle PL/SQL. Paweł Rajba.

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

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Pakiety podprogramów Dynamiczny SQL

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

Ćwiczenia 2 IBM DB2 Data Studio

Systemowe aspekty baz

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

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

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

Wykład 5: PHP: praca z bazą danych MySQL

Oracle PL/SQL. Paweł Rajba.

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

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

Tabele wykorzystywane w przykładach

Oracle PL/SQL. Paweł Rajba.

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

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

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

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

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

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

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

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

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

Relacyjne bazy danych. Podstawy SQL

Microsoft SQL Server Podstawy T-SQL

Database Connectivity

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

Systemy GIS Tworzenie zapytań w bazach danych

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

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

Oracle11g: Programowanie w PL/SQL

Administracja i programowanie pod Microsoft SQL Server 2000

Wstęp do programowania 2

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

SQL (ang. Structured Query Language)

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

Indeksy. Indeks typu B drzewo

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

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

SQL 4 Structured Query Lenguage

Post-relacyjne bazy danych

Relacyjne bazy danych. Podstawy SQL

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

Bazy Danych i Usługi Sieciowe

Podprogramy. Rozdział 11 Procedury i funkcje składowane

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

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

Systemowe aspekty baz danych

Multimedialne bazy danych - laboratorium

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

41. Zmienne lokalne muszą mieć nazwę, którą poprzedza (maksymalnie 128 znaków) oraz typ (każdy z wyjątkiem: text, ntext oraz image)

Wykład 5. SQL praca z tabelami 2

Język PL/SQL Wprowadzenie

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

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

Transkrypt:

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

Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 -

Wprowadzenie Co to jest kursor? Podział na kursory użytkownika domyślne Kiedy używać kursora? - 3 -

Kursory użytkownika Definiowanie kursora CURSOR nazwa IS zapytanie_select Używanie kursora Otworzenie Pobranie wyników do rekordu PL/SQL lub pojedynczych zmiennych Zamknięcie kursora Powyższe można zrobić na 2 sposoby OPEN, FETCH, CLOSE lub FOR LOOP - 4 -

Kursory użytkownika Otwieranie kursora uwagi Po otwarciu zbiór wyników jest w tylko do odczytu Wskaźnik kursora wskazuje na pierwszy wiersz Otwarcie otwartego już kursora wygeneruje wyjątek CURSOR_ALREADY_OPEN Zbiór wyników generowany jest w momencie otwarcie kursora, a nie jego deklaracji - 5 -

Kursory użytkownika Pobieranie danych z kursora bezpośrednio do zmiennych FETCH cursor_name INTO v1, v2,..., vn; do zmiennej rekordowej c_record cursor_name%rowtype -- lub c_record table_name%rowtype... FETCH cursor_name INTO c_record Zamykanie kursora CLOSE cursor_name; - 6 -

Kursory użytkownika Pobieranie i zamykanie kusora uwagi Wczytanie z zamkniętego kursora spowoduje błąd Zaleca się wczytywanie danych kursora do zmiennej rekordowej Zaleca się zamykać każdy nieużywany już kursor, ponieważ istnieje ograniczenie ilości jednocześnie otwartych kursorów tą liczbę można ustawić w konfiguracji bazy danych w pliku init.ora Nie należy też zamykać już zamkniętego kursora - 7 -

Kursory użytkownika Pobieranie wielokrotne z kursora LOOP FETCH csr_name... EXIT WHEN csr_name%notfound... -- obsługa danych END LOOP FETCH csr_name... WHILE ( csr_name%found) LOOP... -- obsługa danych FETCH csr_name... END LOOP - 8 -

Kursory użytkownika Pobieranie wielokrotne z kursora FOR idx IN csr_name LOOP... -- obsługa danych END LOOP FOR idx IN ( SELECT... FROM... ) LOOP... -- obsługa danych END LOOP - 9 -

Kursory użytkownika Pobieranie wielokrotne z kursora uwagi: zmiennej idx nie deklarujemy będzie automatycznie zadeklarowana z typem %ROWTYPE przy przetwarzaniu wszystkich wierszy kursora zaleca się stosowanie składni FOR, szczególnie tej drugiej Jeszcze jedna uwaga: jeśli w deklaracji kursora jest użyta zmienna, to wartość jest pobierana już w momencie otwierania a nie w momencie deklaracji - 10 -

Kursory użytkownika Atrybuty %FOUND %ISOPEN %NOTFOUND %ROWCOUNT Przykład: kursory-petle.txt - 11 -

Kursory użytkownika Kursory sparametryzowane Kursor może przyjmować kilka parametrów Bardzo przydatne przy kursorach zagnieżdżonych Deklaracja CURSOR csr_name( par1, par2,... ) IS SELECT... Podanie parametrów aktualnych OPEN csr_name( v1, v2,... )... FOR idx IN csr_name( v1, v2,... )... Przykład: kursory-parametry.txt - 12 -

Kursory użytkownika Kursory SELECT FOR UPDATE Pozwalają na modyfikację danych kursora Deklaracja CURSOR csr_name IS SELECT c1, c2,... FROM t FOR UPDATE [OF mcol1, mcol2,...] mcol1, mcol2,... - kolumny, które będą mogły być modyfikowane niepodanie klauzuli z kolumnami spowoduje możliwość modyfikacji dowolnej kolumny - 13 -

Kursory użytkownika Kursory SELECT FOR UPDATE używanie Możemy wykonywać operacje UPDATE, DELETE Rekord do modyfikacji określamy poprzez klauzulę WHERE CURRENT of csr_name Kursory SELECT FOR UPDATE uwaga przy otwarciu tego kursora nakładana jest blokada na rekordy, które się w danym kursorze znajdują Przykład: kursory-update.txt - 14 -

Kursory domyślne Służą do informacji o przebiegu pojedynczych instrucji typu insert, update, delete, select.. into Kursor domyślny nazywa się też SQL W momencie wykonania instrukcji, kursor jest otwierany, po zakończeniu zamykany W związku z tym nie tutaj poleceń OPEN, FETCH i CLOSE - 15 -

Kursory domyślne Atrybuty SQL%FOUND wskazuje, czy ostatnio wykonana instrukcja wpłynęła na jakiś wiersz, czy nie SQL%ISOPEN zawsze ustawiony na false SQL%NOTFOUND analogiczne do SQL%FOUND SQL%ROWCOUNT ilość zmodyfikowanych wierszy Przykład: kursory-domyslne.txt - 16 -

Zmienne kursora Pozwala na kojarzenie zmiennej z więcej niż jednym zapytaniem Zmienna ta jest wskaźnikiem Pozwala na dynamiczne tworzenie zapytań zależne od przebiegu kodu PL/SQL - 17 -

Zmienne kursora Deklaracja zmiennej kursora Słaby typ TYPE rc IS REF CURSOR; v_rc rc; Mocny typ TYPE rc IS REF CURSOR tab%row_type; v_rc rc; TYPE c_rec IS RECORD (Id INT, Name VARCHAR2(20)); TYPE rc IS REF CURSOR v_rc rc; - 18 -

Zmienne kursora Użycie zmiennej kursora deklaracja otwarcie OPEN v_rc FOR SELECT... pobieranie wierszy wyniku zamknięcie Przypisywanie zmiennych Słaby typ dowolne przypisania Mocny typ typy muszą się zgadzać - 19 -

Zmienne kursora Typ SYS_REFCURSOR pozwala tworzyć zmienne słabego typu deklaracja takiej zmiennej v_rc SYS_REFCURSOR; powyższe jest równoważne TYPE rc IS REF CURSOR; v_rc rc; - 20 -

Zmienne kursora Uwagi korzystając ze zmiennych nie możemy korzystać z przekazywania parametrów do kursora do zmiennych nie można przypisać wartości null nie można porównywać zmiennych kursorowych oraz sprawdzać, czy mają wartość null Atrybuty są takie jak w ogólnym przypadku kursorów Zmiennych nie można składować w bazie danych czyli zmiennych o typach ref cursor i sys_refcursor Przykład: kursory-zmienne.txt - 21 -

Wyrażenia kursora Pozwalają zmniejszyć liczbę deklaracji kursorów Mają większą wydajność niż konstrukcja zagnieżdżonych kursorów Mogą być zagnieżdżane dowolną liczbę razy Mogą być przekazywane do funkcji jako parametry (omówimy przy okazji funkcji) Deklaracja cursor csr is select col1, cursor ( select... )... Przykład: kursory-wyrazenia.txt - 22 -