Paweł Rajba

Podobne dokumenty
Administracja i programowanie pod Microsoft SQL Server 2000

Kursory. A. Pankowska 1

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.

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

Elementy. języka SQL

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

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

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

SQL 4 Structured Query Lenguage

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Administracja i programowanie pod Microsoft SQL Server 2000

Systemowe aspekty baz

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

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

PODSTAWY BAZ DANYCH 13. PL/SQL

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

na MS SQLServer 2005 i 2008

Oracle PL/SQL. Paweł Rajba.

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

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

Programowanie obiektów

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

Database Connectivity

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Administracja i programowanie pod Microsoft SQL Server 2000

Deklarowanie kursora

Microsoft SQL Server Podstawy T-SQL

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

Bazy Danych i Usługi Sieciowe

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

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

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

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

Systemowe aspekty baz danych

Bazy danych i usługi sieciowe

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

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

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

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

PL/SQL. Zaawansowane tematy PL/SQL

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

Autor: Joanna Karwowska

Oracle PL/SQL. Paweł Rajba.

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

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

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

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Cele. Definiowanie wyzwalaczy

Język SQL, zajęcia nr 1

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

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

Programowanie zaawansowane w T-SQL

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

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

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

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

Oracle PL/SQL. Paweł Rajba.

CREATE USER

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

PHP: bazy danych, SQL, AJAX i JSON

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

Ćwiczenia 2 IBM DB2 Data Studio

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań,

Procedury i funkcje składowane

MCSA: SQL Server 2012

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

Relacyjne bazy danych a XML

Administracja i programowanie pod Microsoft SQL Server 2000

PL/SQL. Zaawansowane tematy PL/SQL

SQL Server Configuration Manager centrum dowodzenia

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

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

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

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

Sieciowa instalacja Sekafi 3 SQL

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

IIIIIIIIIIIIIIIMMIMMIII

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

15. Funkcje i procedury składowane PL/SQL

Administracja i programowanie pod Microsoft SQL Server 2000

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

Kopie zapasowe w SQL Server. Michał Bleja

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

Administracja i programowanie pod Microsoft SQL Server 2000

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Administracja i programowanie pod Microsoft SQL Server 2000

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Oracle PL/SQL. Paweł Rajba.

Transakcje jednocześnie ACID

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

Ref. 7 - Język SQL - polecenia DDL i DML

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

Transkrypt:

Paweł Rajba pawel@cs.uni.wroc.pl http://www.itcourses.eu/

Wprowadzenie Używanie kursorów Rodzaje kursorów Praca z kursorami

Co to jest kursor? Cykl życia kursora utworzenie pobieranie wartości ewentualnie update lub delete zamknięcie zwolnienie zasobów

Rodzaje kursorów w SQL Server Transact-SQL cursors Używane skryptach, procedurach, wyzwalaczach Implementowane na serwerze Zarządzane przez T-SQL wysyłany z klienta do serwera API server cursors Wsparcie dla kursorów w OLE DB i ODBC Zestaw procedur, implementacja na serwerze Sterownik wysyła żądania do serwera do API kursora Client cursors Implementacja w sterownikach native client ODBC, ADO DLL Dane buforowane na kliencie Każde żądanie operacji na kursorze odbywa się na zbuforowanych danych

Podstawowe operacje utworzenie DECLARE nazwa CURSOR FOR zapytanie OPEN nazwa pobieranie wartości FETCH NEXT FROM nazwa zamykanie CLOSE nazwa zwolnienie zasobów DEALLOCATE nazwa

01-podstawowe-uzycie 02-uproszczone-uzycie

Kiedy używamy kursorów? Najbardziej właściwa odpowiedź brzmi: jeśli już koniecznie musimy Jeśli wystarczy, korzystamy z odpowiednich zapytań i złączeń

Przykłady mamy tabelkę Pracownik(pesel, imie, nazwisko, adres, pensja) i dla pewnej grupy pracowników B2B chcemy uruchomić procedurę oblicz podatek i ZUS chcemy zrobić kopie zapasową wszystkich baz na serwerze https://www.mssqltips.com/sqlservertip/1599/sql-server-cursor-example/

Zasięg kursorów kursory mogą być globalne lub lokalne globalne są widoczne dla wszystkich wsadów lokalne tylko dla bieżącego wsadu domyślnie kursory są globalne można to zmienić poprzez polecenie ALTER DATABASE alter database nazwa_bazy set cursor_default local

Kursory statyczne dla danych wynikowych kursora tworzona jest tymczasowa tabela w bazie tempdb i na tej tabeli wykonywane są operacje Kursory kluczowe tylko wartości kluczy są kopiowane do tymczasowej tabeli w tempdb Kursory dynamiczne pracujemy na żywej tabeli nie działa fetch absolute, ale działa fetch relative

Kursory jednokierunkowe Każdy z głównych typów może być jednokierunkowy Przetwarzanie takiego kursora polega zwykle na przeglądzie rekordów od początku do końca instrukcja SELECT jest nadal szybsza od takiego kursora Nawet jeśli zastosujemy opcję FAST_FORWARD

Mamy do dyspozycji dwie składnie: ISO DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR FOR select_statement [ FOR { READ ONLY UPDATE [ OF column_name [,...n ] ] } ] Rozszerzona 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 ] ] ]

Dalej będziemy się zajmować składnią rozszerzoną

Otwieranie kursora służy do tego polecenie OPEN open nazwa_kursora jego zadaniem jest udostępnienie danych i w razie potrzeby wypełnienie tabel tymczasowych Po wykonaniu OPEN można wykonać funkcję @@CURSOR_ROWS, która zwykle zwraca -1 kursor dynamiczny, nie można użyć tej funkcji n liczba wierszy w kursorze 0 kursor nie jest otwarty lub nic nie zawiera

Pobieranie wiersza z kursora służy do tego polecenie FETCH FETCH selektor FROM nazwa [INTO @z1, @z2,...] dostępne selektory: NEXT, PRIOR, FIRST, LAST, ABSOLUTE n, RELATIVE n w przypadku kursora dynamicznego nie jest dostępne ABSOLUTE n w ABSOLUTE i RELATIVE n może być ujemne w ABSOLUTE liczymy od końca w RELATIVE liczymy wstecz od bieżącej pozycji RELATIVE 0 oznacza pobranie bieżącego wiersza

Pobieranie wiersza z kursora Znaczenie opcji FETCH zaraz po otwarciu kursora FETCH NEXT to samo co FETCH FIRST FETCH PRIOR nic nie zwróci FETCH RELATIVE n jeśli n>0, to samo co FETCH ABSOLUTE n, jeśli n<=0, nic nie zwróci Zmienna @@FETCH_STATUS jeśli 0, wiersz został pobrany jeśli -1, przejście poza zakres jeśli -2, brak wiersza w kursorze kluczowym

Pobieranie wiersza z kursora Klauzula INTO jeśli ją podamy, wartości z wiersza zostaną przekazane pod wskazane zmienne jeśli jej nie podamy, dla każdego wiersza będę generowane osobne zestawy wynikowe Ta druga opcja jest oczywiście bardzo nieefektywna Liczba zmiennych, typy i rozmiary muszą się zgadzać z pobranym wynikiem, inaczej błąd

Modyfikacja danych kursora Służy do tego polecenia UPDATE UPDATE tabela SET przypisania WHERE CURRENT OF nazwa_kursora Tak naprawdę wykonywane są dwie operacje: usunięcia i wstawienia wiersza Usunięcie wiersza z kursora Służy do tego polecenie DELETE DELETE FROM tabela WHERE CURRENT OF kursor

Zamykanie kursora Służy do tego polecenie CLOSE CLOSE nazwa_kursora Zamknięcie kursora nie usuwa deklaracji można bez problemu kursor ponownie otworzyć Natomiast przy zamykaniu usuwaną są tabele tymczasowe, czyli przy ponownym otworzeniu są odtwarzane

Niszczenie kursora Służy do tego polecenie DEALLOCATE DEALLOCATE nazwa_kursora Po tym poleceniu konieczna jest ponowna deklaracja Polecenia tego nie ma w standardzie, ale dzięki niemu możemy lepiej zarządzać zasobami

03-rodzaje-kursorów 04-nawigacja 05-update-delete

https://msdn.microsoft.com/pl-pl/library/ms191179(v=sql.110).aspx https://msdn.microsoft.com/pl-pl/library/ms181441(v=sql.110).aspx https://msdn.microsoft.com/pl-pl/library/ms180169(v=sql.110).aspx