Kursory. A. Pankowska 1

Podobne dokumenty
Paweł Rajba

Administracja i programowanie pod Microsoft SQL Server 2000

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

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

Oracle PL/SQL. Paweł Rajba.

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

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

Procedury i funkcje składowane

Elementy. języka SQL

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

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

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

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

PODSTAWY BAZ DANYCH 13. PL/SQL

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

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

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

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

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

Deklarowanie kursora

PL/SQL. Zaawansowane tematy PL/SQL

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

Systemowe aspekty baz

SQL 4 Structured Query Lenguage

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Programowanie zaawansowane w T-SQL

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

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

Systemowe aspekty baz danych

15. Funkcje i procedury składowane PL/SQL

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

Ćwiczenia 2 IBM DB2 Data Studio

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

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

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

PL/SQL. Zaawansowane tematy PL/SQL

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

Oracle PL/SQL. Paweł Rajba.

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

na MS SQLServer 2005 i 2008

Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze

Wyzwalacze (triggery) Przykład

Bloki anonimowe w PL/SQL

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

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

Wykład 8. SQL praca z tabelami 5

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

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

Materiały do laboratorium MS ACCESS BASIC

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

Bloki anonimowe w PL/SQL

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

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

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

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

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

Informatyka (7-8) dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Przykładowa baza danych BIBLIOTEKA

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

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

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

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

Database Connectivity

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

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

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

Oracle PL/SQL. Paweł Rajba.

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Bazy Danych i Usługi Sieciowe

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

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

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

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

Post-relacyjne bazy danych

Struktura bazy danych

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

startup pfile= '$HOME/admin/pfile/initDBx.ora'; create spfile from pfile= '$HOME/admin/pfile/initDBx.ora';

Bazy danych i usługi sieciowe

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

Administracja i programowanie pod Microsoft SQL Server 2000

Obowiązuje od wersji

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Język SQL. Rozdział 7. Zaawansowane mechanizmy w zapytaniach

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

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

Bazy danych 8. Procedury składowane i kursory. P. F. Góra

Relacyjne bazy danych a XML

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

ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Imię i Nazwisko Data Ocena. Laboratorium 7

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

BAZY DANYCH Cz III. Transakcje, Triggery

Aspekty aktywne baz danych

Transkrypt:

Kursory 1

Kursory Kursor jest mechanizmem pozwalającym obsłużyć zbiór zawierający wiele wierszy danych (generowany np. poleceniem SELECT). Jak wskaźnik przebiega on po kolejnych krotkach ze zbioru danych, pozwalając wykonywać operacje na tych krotkach. Najczęstszą operacją jest pobranie aktualnie wskazywanej krotki poleceniem FETCH. 2

DECLARE CURSOR DECLARE cursor_name CURSOR [ LOCAL GLOBAL ] [ FORWARD_ONLY SCROLL ] [ STATIC KEYSET DYNAMIC FAST_FORWARD ] [ READ_ONLY SCROLL_LOCKS OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [,...n ] ] ] 3

DECLARE CURSOR c.d. gdzie: LOCAL oznacza, że do kursora będzie można odwołać się wyłącznie z bieżącej procedury wsadowej, procedury składowanej lub wyzwalacza, GLOBAL oznacza zakres kursora jako równy sesji użytkownika, FORWARD_ONLY określa, że kursor będzie mógł być przesuwany jedynie od pierwszego do ostatniego rekordu. Jedynym sposobem pobrania danych poprzez tak zadeklarowany kursor jest wykonanie polecenia FETCH NEXT, SCROLL umożliwia odwoływanie się do dowolnych rekordów zwróconych przez kursor, STATIC powoduje utworzenie tymczasowej tabeli (w bazie tempdb) przechowującej rekordy kursora. Zmiany w tabeli źródłowej, które nastąpiły po jego zadeklarowaniu nie będą widoczne poprzez kursor, KEYSET powoduje utworzenie tymczasowej tabeli keyset (w bazie tempdb) przechowującej identyfikatory tabeli źródłowej kursora. Aktualizacje rekordów, których identyfikatory zostały zapisane w tabeli keyset, będą widoczne poprzez kursor, natomiast dodanie nowych wierszy do tabeli źródłowej nie, DYNAMIC powoduje, że wszystkie zmiany w tabeli źródłowej będą widoczne poprzez kursor, FAST_FORWARD powoduje utworzenie kursora typu FORWARD_ONLY umożliwiającego jedynie odczytywanie danych i zoptymalizowanego pod kątem odczytywania kolejnych rekordów. 4

Przykład: deklaracja kursora o nazwie kursorek i związanie go z wynikiem polecenia SELECT otwarcie kursora pobranie pierwszego wiersza ze zbioru zwróconego przez SELECT i podstawienie jego wartości (nazwisko) pod zmienną pobieranie w pętli kolejnych wierszy aż do ostatniego DECLARE @nazw VARCHAR(20) DECLARE kursorek CURSOR FOR SELECT nazwisko FROM pracownicy OPEN kursorek FETCH NEXT FROM kursorek INTO @nazw WHILE @@FETCH_STATUS = 0 BEGIN PRINT @nazw FETCH NEXT FROM kursorek INTO @nazw END zamknięcie kursora i dealokacja pamięci CLOSE kursorek DEALLOCATE kursorek 5

@@FETCH_STATUS - zwraca status (wartość INTEGER) ostatnio wykonanego polecenia FETCH któregokolwiek z aktualnie otwartych kursorów. Znaczenie: 0 polecenie FETCH zakończyło się pomyślnie -1 polecenie FETCH nie powiodło się lub kursor znalazł się poza zbiorem wynikowym -2 pobrany wiersz został utracony 6

Zadanie Za pomocą kursorów utwórz następujący raport: dla każdego działu podaj jego nazwę i liczbę pracowników oraz procentowy udział każdego stanowiska w ogólnej liczbie pracowników tego działu. Raport ma mieć następującą postać: ADMINISTRACJA 3 pracowników -------------------------------------- - ADIUNKT 0% - ASYSTENT 33.33% - DYREKTOR 33.33% - PROFESOR 0% - SEKRETARKA 33.33% - STAZYSTA 0% SYSTEMY ROZPROSZONE 7 pracowników -------------------------------------- - ADIUNKT 28.57% - ASYSTENT 42.86%... 7

Zadanie Dana jest tabela TABELA(nazwa) o czterech krotkach: a, b, c, d. Jaki będzie wynik działania poleceń i dlaczego: A DECLARE @nazwa VARCHAR(20) DECLARE kursorek CURSOR FOR SELECT nazwa FROM tabela OPEN kursorek FETCH NEXT FROM kursorek INTO @nazwa DELETE FROM tabela WHERE nazwa='c' WHILE @@FETCH_STATUS = 0 BEGIN PRINT @nazwa FETCH NEXT FROM kursorek INTO @nazwa END CLOSE kursorek DEALLOCATE kursorek B DECLARE @nazwa VARCHAR(20) DECLARE kursorek CURSOR STATIC FOR SELECT nazwa FROM tabela OPEN kursorek FETCH NEXT FROM kursorek INTO @nazwa DELETE FROM tabela WHERE nazwa='c' WHILE @@FETCH_STATUS = 0 BEGIN PRINT @nazwa FETCH NEXT FROM kursorek INTO @nazwa END CLOSE kursorek DEALLOCATE kursorek 8