DECLARE VARIABLE zmienna1 typ danych; BEGIN



Podobne dokumenty
Składowane procedury i funkcje

PODSTAWY BAZ DANYCH 13. PL/SQL

Bloki anonimowe w PL/SQL

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

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

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

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

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

Zaawansowane bazy danych i hurtownie danych semestr I

15. Funkcje i procedury składowane PL/SQL

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

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

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

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

Wykład 8. SQL praca z tabelami 5

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

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Cele. Definiowanie wyzwalaczy

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

Pakiety podprogramów Dynamiczny SQL

Oracle PL/SQL. Paweł Rajba.

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

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

BAZY DANYCH W APLIKACJACH SIECIOWYCH

Język PL/SQL. Rozdział 3. Obsługa błędów wykonania Wyjątki predefiniowane i użytkownika, zgłaszanie i obsługa wyjątków.

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

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

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

BAZY DANYCH Cz III. Transakcje, Triggery

Struktura bazy danych

Hurtownia Świętego Mikołaja projekt bazy danych

BAZA DANYCH SIECI HOTELI

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

Wyzwalacze (triggery) Przykład

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

Procedury i funkcje składowane

Aspekty aktywne baz danych

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

1. Wyzwalacze BD (ang. triggers)

SQL :: Data Definition Language

SQL 4 Structured Query Lenguage

Język SQL, zajęcia nr 1

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

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

Ćwiczenia 2 IBM DB2 Data Studio

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

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

PL/SQL. Zaawansowane tematy PL/SQL

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

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

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

Tabele wykorzystywane w przykładach

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

Obowiązuje od wersji

Deklarowanie kursora

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

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

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

Wykład 5. SQL praca z tabelami 2

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

Administracja i programowanie pod Microsoft SQL Server 2000

Technologie baz danych WYKŁAD 7: Wyjątki

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

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

Bazy danych 10. SQL Widoki

Oracle11g: Wprowadzenie do SQL

Bazy danych 6. Klucze obce. P. F. Góra

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

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

Systemowe aspekty baz danych

Systemowe aspekty baz

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

1. ELEMENTY JĘZYKA PL/SQL

Oracle PL/SQL. Paweł Rajba.

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

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

CREATE USER

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)

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

Paweł Rajba

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

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

Indeksy. Indeks typu B drzewo

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

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

Bazy Danych i Usługi Sieciowe

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

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

Bazy danych 7. SQL podstawy

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

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

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

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

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Oracle PL/SQL. Paweł Rajba.

Transkrypt:

Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.; można je wywoływać zarówno z linii SQL jak i z aplikacji zewnętrznej; mogą posiadać dane wejściowe (parametry) jak i dane wyjściowe. Umożliwiają przeniesienie skomplikowanych (czasochłonnych) obliczeń na serwer i odciążenie stacji klientów, redukcję ruchu w sieci. Różne aplikacje pracujące na tej samej bazie danych mogą korzystać z jednej procedury zapamiętanej. Zmiana takiej procedury następuje tylko w jednym miejscu (w bazie danych) i jest widoczna na wszystkich stacjach pracujących z tą bazą. Procedury mogą być wybierające (muszą zwracać przynajmniej jedną wartość wywoływane przez SELECT) lub wykonywalne (wykonują operacje na danych w bazie, mogę również zwracać wartości, wywoływane przez EXECUTE PROCEDURE). Definicja procedury zapamiętanej: CREATE PROCEDURE nazwa procedury nagłówek (parametr1 typ danych, parametr2 typ danych, ) RETURNS ( parametr1 typ danych, parametr2 typ danych ) DECLARE VARIABLE zmienna1 typ danych; ciało DECLARE VARIABLE zmienna2 typ danych;. END; W ciele procedury można używać instrukcji SQL-a do manipulowania danymi typu INSERT, UPDATE, DELETE, SELECT, funkcji użytkownika (UDF), funkcji i operatorów SQL, generatorów, wyjątków, rozszerzeń języka SQL. Wyzwalacze (triggery) w Interbase - mechanizmy powiązane z tabelą lub widokiem, które wykonują automatycznie określoną akcję przed lub po wstawieniu, modyfikacji, usunięciu wiersza z danej tabeli (widoku). Operują w obrębie aktywnej transakcji jej wycofanie powoduje wycofanie zmian wprowadzonych przez wyzwalacze. Umożliwiają automatyzację pewnych operacji wykonywanych w bazie danych (dzienniki zmian dla tabeli, sprawdzanie poprawności wprowadzanych danych, itp.). Definicja wyzwalacza: CREATE TRIGGER nazwa FOR tabela widok nagłówek [ACTIVE INACTIVE] BEFORE AFTER DELETE INSERT UPDATE [POSITION numer] DECLARE VARIABLE zmienna1 typ danych; ciało DECLARE VARIABLE zmienna2 typ danych; 1

. END; W ciele wyzwalacza można używać oprócz poleceń i rozszerzeń SQL takich, jak w procedurach zapamiętanych, także zmiennych kontekstowych: NEW.kolumna nowa wartość w kolumnie, OLD.kolumna bieżąca (dotychczasowa) wartość w kolumnie. Rozszerzenia języka SQL stosowane w procedurach zapamiętanych i wyzwalaczach w Rozszerzenie END zmienna = wyrażenie Interbase Opis blok instrukcji przypisanie wyrażenia do zmiennej, zmienną może być zmienna lokalna, parametr wejściowy lub wyjściowy /* tekst komentarza*/ komentarz EXCEPTION nazwa wywołanie wyjątku, który może zostać obsłużony EXECUTE PROCEDURE nazwa_procedury[zmienna[,zmienna ]] [RETURNING_VALUES zmienna [, zmienna ]] EXIT FOR select DO instrukcja/blok instrukcji IF (warunek) THEN instrukcja/blok instrukcji [ELSE instrukcja/blok instrukcji] POST_EVENT zdarzenie SUSPEND WHILE (warunek) DO instrukcja/blok instrukcji WHEN {błąd [, błąd ] ANY} DO instrukcja/blok instrukcji poprzez WHEN wywołanie procedury skok do końca procedury powtarza instrukcję lub blok instrukcji dla każdego wiersza otrzymanego z zapytania select (SELECT z klauzulą INTO) instrukcja warunkowa wywołanie zdarzenia stosowane tylko w procedurach wybierających, zawiesza wykonywanie procedury do momentu wykonania kolejnej operacji pobrania wierszy (przez aplikację użytkownika), zwraca wartości wyjściowe pętla, sprawdza wartość warunku, jeżeli jest on spełniony, wykonywane są instrukcje występujące po słowie DO obsługa błędów, gdy wystąpi jeden z wymienionych błędów, nastąpi wywołanie instrukcji znajdujących się po słowie DO, przez błąd rozumiemy - EXCEPTION nazwa_wyjątku, SQLCODE numer_błędu lub GDSCODE numer_błędu ANY- obsługa dowolnego błędu 2

Wyjątek w Intebase - komunikat o błędzie, który może zostać wywołany z poziomu procedury lub wyzwalacza. Po wywołaniu wyjątku wstrzymane jest wykonywanie procedury, z której wyjątek został wywołany - chyba że jest obsłużony za pomocą instrukcji WHEN. tworzenie CREATE EXCEPTION nazwa 'komunikat'; modyfikacja ALTER EXCEPTION nazwa nowy komunikat' usuwanie DROP EXCEPTION nazwa; wywołanie wyjątku z poziomu procedury lub wyzwalacza EXCEPTION nazwa; Rodzaje błędów, które można obsłużyć w procedurze zapamiętanej (wyzwalaczu): wyjątki wygenerowane przez EXCEPTION, błędy SQL a - SQLCODE, błędy Interbase a GDSCODE. Przykłady procedur zapamiętanych. użycie zmiennej lokalnej SET TERM ## ; CREATE PROCEDURE PODWYZKA DECLARE VARIABLE kwota integer; kwota=100; UPDATE employee SET salary=salary+:kwota; END ## SET TERM ; ## wywołanie :EXECUTE PROCEDURE podwyzka użycie parametrów SET TERM ## ; CREATE PROCEDURE dodaj_towar (nr INTEGER, nazwa CHAR(40), cena decimal(6,2)) INSERT INTO towar (nr, nazwa_towaru,cena_netto) VALUES (:nr, :nazwa, :cena); END ## SET TERM ; ## wywołanie: EXECUTE PROCEDURE dodaj_towar(1,'lg 795',1000); 3

użycie instrukcji FOR select DO CREATE PROCEDURE GET_EMP_PROJ (EMP_NO SMALLINT) RETURNS (EMP_PROJ SMALLINT) FOR SELECT PROJ_ID FROM EMPLOYEE_PROJECT WHERE EMP_NO = :EMP_NO INTO :EMP_PROJ DO SUSPEND; wywołanie: SELECT * FROM GET_EMP_PROJ(24); Przykłady wyzwalaczy. użycie generatora CUST_NO_GEN do utworzenia unikalnego numeru klienta CUST_NO w tabeli CUSTOMER CREATE TRIGGER SET_CUST_NO FOR CUSTOMER BEFORE INSERT NEW.CUST_NO = GEN_ID(CUST_NO_GEN, 1); SET TERM ;!! użycie wyzwalacza w celu utworzenia historii zmian zarobków CREATE TRIGGER SAVE_SALARY_CHANGE FOR EMPLOYEE AFTER UPDATE IF (old.salary <> new.salary) THEN INSERT INTO SALARY_HISTORY (EMP_NO, CHANGE_DATE, UPDATER_ID, OLD_SALARY, PERCENT_CHANGE) VALUES (old.emp_no, 'now', USER, old.salary, (new.salary - old.salary) * 100 / old.salary); SET TERM ;!! przykładowa obsługa błędu SQL w procedurze zapamiętanej SET TERM ^ ; CREATE PROCEDURE wstaw_towar (A INTEGER, B VARCHAR(25)) RETURNS (E CHAR(60)) E= ; INSERT INTO towar(numer, nazwa) VALUES (:A, :B); WHEN SQLCODE -803 DO E = Błąd naruszenie unikalności kolumny ; END^ CREATE EXCEPTION nieznany_nr_prac 'Nieznany numer pracownika'^ CREATE PROCEDURE prac_proj ( EMP_NO SMALLINT, PROJ_ID CHAR(5)) 4

INSERT INTO employee_project (emp_no, proj_id) VALUES (:emp_no, :proj_id); WHEN SQLCODE -530 DO EXCEPTION nieznany_nr_prac; END SUSPEND; END^ /* SQLCODE -530 naruszenie klucza obcego*/ SET TERM ; ^ 5