Administracja i programowanie pod Microsoft SQL Server 2000



Podobne dokumenty
Paweł Rajba

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.

Oracle PL/SQL. Paweł Rajba.

SQL 4 Structured Query Lenguage

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

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

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

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

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

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

Elementy. języka SQL

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000

Oracle PL/SQL. Paweł Rajba.

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

Microsoft SQL Server Podstawy T-SQL

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

Systemowe aspekty baz

Oracle PL/SQL. Paweł Rajba.

PODSTAWY BAZ DANYCH 13. PL/SQL

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

Programowanie obiektów

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Administracja i programowanie pod Microsoft SQL Server 2000

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

Database Connectivity

Administracja i programowanie pod Microsoft SQL Server 2000

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

Relacyjne bazy danych a XML

Deklarowanie kursora

Oracle PL/SQL. Paweł Rajba.

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

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

na MS SQLServer 2005 i 2008

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

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

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

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

Systemowe aspekty baz danych

Administracja i programowanie pod Microsoft SQL Server 2000

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

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

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

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

CREATE USER

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

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

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

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000

Paweł Rajba

PHP: bazy danych, SQL, AJAX i JSON

SQL (ang. Structured Query Language)

Język SQL, zajęcia nr 1

Podstawy technologii WWW

Autor: Joanna Karwowska

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

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

Bazy Danych i Usługi Sieciowe

Oracle11g: Wprowadzenie do SQL

Oracle PL/SQL. Paweł Rajba.

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

IIIIIIIIIIIIIIIMMIMMIII

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

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.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

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

15. Funkcje i procedury składowane PL/SQL

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

Bazy danych Język SQL część 2 Wykład dla studentów matem

Bazy danych i usługi sieciowe

Cele. Definiowanie wyzwalaczy

Wykład 5. SQL praca z tabelami 2

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

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

Procedury i funkcje składowane

Składowane procedury i funkcje

Bloki anonimowe w PL/SQL

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

Administracja i programowanie pod Microsoft SQL Server 2000

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Transakcje jednocześnie ACID

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

BAZY DANYCH Cz III. Transakcje, Triggery

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

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

Pakiety podprogramów Dynamiczny SQL

Transkrypt:

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

Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca z kursorami - 1 -

Wprowadzenie do kursorów Co to jest kursor? Operacje wykonywane na kursorze: utworzenie pobieranie wartości ewentualnie update lub delete zamknięcie zwolnienie zasobów - 2 -

Wprowadzenie do kursorów Jak to się robi SQLServerze? utworzenie DECLARE nazwa CURSOR FOR zapytanie OPEN nazwa pobieranie wartości FETCH NEXT FROM nazwa zamykanie CLOSE nazwa zwolnienie zasobów DEALLOCATE nazwa - 3 -

Wprowadzenie do kursorów Przykład sqlserver-05-01.sql - 4 -

Modele kursorów Dalej omówimy dwa modele Kursory języka Transact-SQL Kursory serwerowe API - 5 -

Modele kursorów Kursory języka Transact-SQL Używamy zwykle we wsadach i procedurach Pozwalają na modyfikację danych związanych z kursorem (standard ANSI wymaga trybu read-only) Kursory można przewijać do przodu i wstecz, jak również pozycjonować względnie i bezwzględnie Możliwości w T-SQL są bardzo spore (w porównaniu z innymi systemami) - 6 -

Modele kursorów Kursory serwerowe API stosowane głównie w aplikacjach klienckich są zoptymalizowane pod kątem komunikacji klient- serwer zwykle pobierany jest nie jeden wiersz, a np. 20 wierszy za jednym razem nagłówki przesyłane są raz na początku, a przy każdym żądaniu wiersza udostępniane przez różne biblioteki, np. DB-Library, ODBC, ADO, RDO, itp. - 7 -

Używanie kursorów 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ń Czasami jednak kursory znacznie ułatwiają wykonanie zadania - 8 -

Używanie kursorów Przykład 1, użycie kursorów T-SQLa mamy tabelkę Pracownik(pesel, imie, nazwisko, adres, pensja) chcemy zrobić rzecz następującą: w zależności od pensji wykonać odpowiednią procedurę: pensja w przedziale [0,2000] proc. socjalne pensja w przedziale [2000-5000] proc. podatek pensja powyżej 5000 proc. superpodatek - 9 -

Używanie kursorów Przykład 2, użycie kursorów API użytkownik przegląda listę książek zawierającą w sumie 1000000 pozycji zwykle nie ogląda wszystkich, tylko pewne wybrane fragmenty i tutaj idealne są kursowy serwerowe API wysyłamy tylko te fragmenty tabeli, które są żądane pamiętamy, że za jednym razem wysyłamy tyle danych, ile mieści się w okienku aplikacji (albo 2, 3 razy więcej) - 10 -

Rodzaje kursorów 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 - 11 -

Rodzaje kursorów Kursory jednokierunkowe kursory dynamiczne, w których działa tylko fetch next są szybkie przetwarzanie takiego kursora polega zwykle na przeglądzie rekordów od początku do końca instrukcja SELECT jest nadal szybsza od takiego kursora - 12 -

Praca z kursorami Deklaracja kursora Składnia ANSI-92 DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR FOR select_statement statement [ FOR { READ ONLY UPDATE [ OF column_name name [,...n ] ] } ] Składnia 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 ] ] ] - 13 -

Praca z kursorami Zasięg kursorów kursory nie są widoczne poza danym połączeniem 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 - 14 -

Praca z kursorami Istotna uwaga jeśli w deklaracji kursora jest użyta zmienna, to wartość jest pobierana już w momencie deklaracji a nie w momencie otwierania Przykład sqlserver-05-02.sql - 15 -

Praca z kursorami 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 otwary lub nic nie zawiera - 16 -

Praca z kursorami 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 kurora 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 - 17 -

Praca z kursorami 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 jesli -2, brak wiersza w kursorze kluczowym - 18 -

Praca z kursorami 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ędzie błąd - 19 -

Praca z kursorami Modyfikacja 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 - 20 -

Praca z kursorami 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 - 21 -

Praca z kursorami 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 - 22 -

Praca z kursorami Przykłady sqlserver-05-03.sql sqlserver-05-04.sql sqlserver-05-05.sql sqlserver-05-06.sql sqlserver-05-07.sql - 23 -