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



Podobne dokumenty
Struktura bazy danych

Język SQL, zajęcia nr 1

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

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

BAZY DANYCH Cz III. Transakcje, Triggery

Bazy danych. dr inż. Arkadiusz Mirakowski

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Wykład 5. SQL praca z tabelami 2

Bazy Danych i Usługi Sieciowe

Bazy danych i usługi sieciowe

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

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

BAZA DANYCH SIECI HOTELI

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Wykład 8. SQL praca z tabelami 5

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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

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

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

Systemowe aspekty baz

Aspekty aktywne baz danych

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

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

SQL 4 Structured Query Lenguage

Składowane procedury i funkcje

Hurtownia Świętego Mikołaja projekt bazy danych

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

15. Funkcje i procedury składowane PL/SQL

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

Relacyjne bazy danych. Podstawy SQL

Oracle PL/SQL. Paweł Rajba.

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

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

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Administracja i programowanie pod Microsoft SQL Server 2000

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

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

PODSTAWY BAZ DANYCH 13. PL/SQL

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

Systemowe aspekty baz danych

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wyzwalacze (triggery) Przykład

Relacyjne bazy danych. Podstawy SQL

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

Bloki anonimowe w PL/SQL

SQL :: Data Definition Language

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Wykład 6. SQL praca z tabelami 3

Oracle PL/SQL. Paweł Rajba.

Wykład 05 Bazy danych

Cele. Definiowanie wyzwalaczy

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

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

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

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

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

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

Autor: Joanna Karwowska

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Bazy danych 7. SQL podstawy

Grupowanie i funkcje agregujące

Pakiety podprogramów Dynamiczny SQL

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

Transakcje inf. podstawowe

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

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

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Oracle11g: Wprowadzenie do SQL

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

Oracle PL/SQL. Paweł Rajba.

Przestrzenne bazy danych Podstawy języka SQL

Przykładowa baza danych BIBLIOTEKA

CREATE TABLE autorzy ( id_autora SERIAL PRIMARY KEY, imie TEXT, nazwisko TEXT );

Bazy danych. Polecenia SQL

Projektowanie systemów baz danych

Administracja i programowanie pod Microsoft SQL Server 2000

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Imię i Nazwisko Data Ocena. Laboratorium 7

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

Programowanie w Ruby

SQL Server Łukasz Łysik 21 października 2008

Elementy. języka SQL

SQL (ang. Structured Query Language)

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

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

Oracle PL/SQL. Paweł Rajba.

Kowalski Marcin Wrocław, dn Jaśkiewicz Kamil Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

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

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Ćwiczenia 2 IBM DB2 Data Studio

Transkrypt:

Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued user defined function zwracają jako wynik pojedyńczą wartość. Instrukcja tworząca przykładową funkcję skalarną poniżej: CREATE FUNCTION guid studenta @nr indeksu varchar 6 S uniqueidentifier SELECT guid FROM studenci WHERE nr indeksu = @nr indeksu Przykład wykorzystania funkcji a zarazem wywołanie funkcji w innej funkcji: CREATE FUNCTION srednia@nr indeksu varchar 6 S float SELECT AVGCT ocena float FROM egzaminy WHERE student guid = dbo.guid studenta@nr indeksu Z kolei wywołanie funkcji dbo.guid studenta może wyglądać następująco: SELECT dbo.srednia100000 W celu usunięcia funkcji wystarczy wykonać polecenie: DROP FUNCTION dbo.srednia 2. Funkcje o wartościach tabelarycznych ang. table valued function są nazywane również sparametryzowanymi widokami, zwracają jako wartość tablicę rekordów, na przykład: CREATE FUNCTION oceny@nr indeksu varchar 6 S TABLE

SELECT ocena FROM egzaminy WHERE student guid = dbo.guid studenta@nr indeksu 3.... ang. multi statement table valued function jest to funkcja o wartościach tabelarycznych z tym, że zwracana tabela jest traktowana jak zmienna w ciele funkcji, na przykład poniższa funkcja wyświetla ranking w bieżącej rekrutacji do pozycji @top: CREATE FUNCTION ranking rekrutacji@top int S @ranking TABLE nazwanie zmiennej tabelarycznej i deklaracja tabeli pozycja int IDENTITY, deklaracja kolumny typu int, która uzupełniana jest kolejnymi wartościami od 1 w ogólności IDENTITY [początkowa wartość, inkrementacja] imie varchar 30, nazwisko varchar 30, punkty int INSERT @ranking SELECT TOP @top imie, nazwisko, punkty ORDER BY punkty DESC oraz przykład wywołania SELECT * FROM dbo.ranking rekrutacji10 Procedury 4. Procedury składowane są to prekompilowane wyrażenia języka SQL przechowywane na serwerze bazodanowym. Mogą być definiowane z parametrami wejściowymi i wyjściowymi, na przykład: CREATE PROCEDURE dodaj kandydata @imie varchar 30, @nazwisko varchar 30, @plec char 1,

@adres varchar 50, @punkty int INSERT rekrutacja VALUES @imie, @nazwisko, @plec, @adres, @punkty została zdefiniowana tylko z parametrami wejściowymi: @imie, @nazwisko, @plec, @adres, @punkty, a jej wywołanie może wyglądać następująco: EXECUTE rekrutacja Adam, Wawrzyniak, M, Poznan, 186 Poniżej przykład definicji procedury z obydwoma typami parametrów: CREATE PROCEDURE lista kandydatow @wzor imienia varchar 30, @wzor nazwiska varchar 30, @liczba int OUTPUT SET NOCOUNT ON wyłączenie wyświetlania liczby przetworzonych rekordów SELECT @liczba = COUNT * WHERE imie LIKE @wzor imienia AND nazwisko LIKE @wzor nazwiska SELECT * WHERE imie LIKE @wzor imienia AND nazwisko LIKE @wzor nazwiska W celu wykorzystania procedury lista kandydatów konieczna jest deklaracja zmiennej do której przekazana zostanie wartość zatem na przykład: DECLARE @liczba int EXEC lista kandydatow A%, W%, @liczba OUTPUT SELECT @liczba Domyślne wartości parametrów Zarówno w przypadku funkcji jak i procedur możliwe jest określenie domyślnych parametrów wywołania określając ich warotść, na przykład: CREATE PROCEDURE lista przedmiotow @wzor symbolu varchar 3 = %, @wzor nazwy varchar 30 = % SELECT symbol, nazwa, punkty

FROM przedmioty WHERE symbol LIKE @wzor symbolu AND nazwa LIKE @wzor nazwy Dla powyżej zdefiniowanej procedury możliwe są następujące sposoby wywołania: EXEC lista przedmiotow EXEC lista przedmiotow M% EXEC lista przedmiotow A%, n% ale jeżeli chcemy zmienić tylko drugi parametr należy odwołać się do niego po nazwie następująco: EXEC lista przedmiotow @wzor nazwy = n% czyli wywołanie: EXEC lista przedmiotow @wzor nazwy = n%, @wzor symbolu = A% ze zmienioną kolejnością parametrów, jest równoważne wywołaniu: EXEC lista przedmiotow A%, n% Triggery procedury wyzwalane 5. Triggery są to pezparametrowe procedury użytkownika wyzwalane automatycznie w wyniku wykonania jednego z poleceń: INSERT, DELETE, UPDATE, w trakcie FOR, po AFTER lub zamiast INSTEAD niego. Wykorzystują tabele systemowe inserted i deleted. Poniżej przykład triggera, który jest zdefiniowany na tabeli studenci i usuwaja wpisy z tabeli egzaminy dla studentów których chcemy usunąć z tabeli studenci: CREATE TRIGGER trigger usun wpisy ON studenci FOR DELETE IF EXISTS SELECT * FROM deleted DELETE egzaminy WHERE student guid IN SELECT guid FROM deleted Sprawdzanie istnienia obiektów w bazie danych Informacje o tabelach, widokach, procedurach i funkcjach zawartych w bazie danych znajdują się w tabelach: sysobjects, syscolumns. Informacje o użytkownikach bazy danych znajdują się z kolei w tabeli sysyusers. W celu sprawdzenia czy dany obiekt istnieje już w bazie danych można również skorzystać z funkcji OBJECT IDnazwa obiektu, typ obiektu na przykład w przypadku procedury, możemy ją usunąć bez błędu w następujący sposób: IF OBJECT ID lista przedmiotow, P IS NOT NULL DROP PROCEDURE lista przedmiotow Zadania

UWAGA: We wszystkich tworzonych procedurach i funkcjach należy dodać podstawową obsługę błędów. Zadanie 1. Napisać procedurę dodawania nowych przedmiotów. Zadanie 2. Napisać procedurę dodawania nowego studenta, przy czym konieczne jest wcześniejsze sprawdzenie, czy przeszedł on pomyślnie proces rekrutacji. Po dodaniu studenta, należy odpowiednie dane usunąć z tabeli rekrutacja. Pomocna może się również okazać funkcja wyznaczająca pierwszy wolny numer indeksu. Zadanie 3. Napisać procedurę dodawania nowego wpisu z egzaminu. W tym przypadku należy umożliwić egzaminatorowi posługiwanie się symbolem lub pełną nazwą przedmiotu podczas dodawania wpisu. Zadanie 4. Napisać trigger, który będzie przenosił usuwane dane z tabeli studenci do odpowiedniej tabeli danych historycznych, np. studenci historia.