Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Podobne dokumenty
PODSTAWY BAZ DANYCH 13. PL/SQL

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

PL/SQL. Zaawansowane tematy PL/SQL

Tabele wykorzystywane w przykładach

Bloki anonimowe w PL/SQL

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Zaawansowane bazy danych i hurtownie danych semestr I

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

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

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

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

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

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

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

Bazy danych, 4. wiczenia

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 3. Zasięg zmiennych. Zasięg zmiennych

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

1. Wyzwalacze BD (ang. triggers)

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

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

Bloki anonimowe w PL/SQL

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

BAZY DANYCH W APLIKACJACH SIECIOWYCH

Procedury i funkcje składowane

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

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

BAZA DANYCH SIECI HOTELI

Pakiety podprogramów Dynamiczny SQL

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

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

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

Hurtownia Świętego Mikołaja projekt bazy danych

Bazy danych. Plan wykładu. Złczenia tabel. Perspektywy cd. Wykład 9: Programowanie aplikacji baz danych po stronie serwera. Sekwencje Wyzwalacze

PL/SQL. Część 1 Bloki PL/SQL. Piotr Medoń

Ćwiczenie 13 PL/SQL. Język PL/SQL procedury, funkcje, pakiety, wyzwalacze

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

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

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

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

15. Funkcje i procedury składowane PL/SQL

Język PL/SQL Pakiety podprogramów

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

Deklarowanie kursora

Oracle PL/SQL. Paweł Rajba.

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

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

1. ELEMENTY JĘZYKA PL/SQL

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

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

PL/SQL. Zaawansowane tematy PL/SQL

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

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

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

Plan wykładu BAZY DANYCH II WYKŁAD 7. Pakiety. Zalety pakietów

Oracle PL/SQL. Paweł Rajba.

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

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

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

Podprogramy. Rozdział 11 Procedury i funkcje składowane

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

Oracle PL/SQL. Paweł Rajba.

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

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Zaawansowane bazy danych i hurtownie danych semestr I, st. niestacjonarne

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

SQL 4 Structured Query Lenguage

Oracle PL/SQL. Paweł Rajba.

Cele. Definiowanie wyzwalaczy

Projekt-bazy danych Poczta

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.

Procedury Funkcje Pakiety. Tworzenie procedury

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

Wyzwalacze TWORZENIE WYZWALACZY

Tworzenie raportów XML Publisher przy użyciu Data Templates

SQL :: Data Definition Language

Ćwiczenie 13 PL/SQL. Język PL/SQL procedury, funkcje, pakiety, wyzwalacze

Język PL/SQL Wprowadzenie

Technologie baz danych WYKŁAD 7: Wyjątki

Plan wykładu BAZY DANYCH II WYKŁAD 8. Wyzwalacze. Wyzwalacze

Wyzwalacze (triggery) Przykład

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

Oracle11g: Programowanie w PL/SQL

PL/SQL. Ćwicznia 2. Ćwiczenia 3

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

Ćwiczenia 2 IBM DB2 Data Studio

Bazy danych programowanie Wykład dla studentów matematyk

Projekt bazy danych. Schemat bazy danych. Opis bazy danych

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

Indeksy. Indeks typu B drzewo

Plan wykładu BAZY DANYCH II WYKŁAD 6. Co to są wyjątki? Co to są wyjątki?

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

Zaawansowane bazy danych i hurtownie danych semestr I

Oracle10g: Programowanie w PL/SQL

Język PL/SQL Wprowadzenie

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

Baza danych hotel Maciej Gerus

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

W PostgreSQL mamy do dyspozycji nie tylko funkcje wbudowane, ale również możemy tworzyć własne. Są one zapisywane w tabeli systemowej pg_proc.

Struktura bazy danych

Transkrypt:

Declare y integer; z varchar2(50); d date; null; Declare x integer:=10; null; x integer; x:=10; dbms_output.put_line('hello world'); for x in 1..10 loop Deklaracja 4 zmiennych. Jednej typu rzeczywistego, jednej typu całkowitego, jednej typu tekstowego i jednej typu date. Dwa sposoby przypisania wartości do zmiennej. Wypisywanie komunikatów na konsolę Różne postacie pętli for (wykonującej się określoną ilość razy). for x in reverse 1..10 loop for x in 20..40 loop st integer:=10; so integer:=20; for x in st..so loop Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 1/9

Declare x integer; x:=1; loop exit when x=20; x:=x+1; Declare x integer:=1; while(x<=10) loop x:=x+1; Declare masa number:=90; wzrost number:=1.78; bmi number; bmi:=masa/power(wzrost,2); if bmi<18 then dbms_output.put_line('niedowaga'); elsif bmi<=24.99 then dbms_output.put_line('ok'); else dbms_output.put_line('nadwaga'); end if; Pętla exit when. Taka pętla wykonuje się tak długo, aż nastąpi warunek określony w exit when. Taka pętla wykonuje się tak długo, jak długo prawdziwy jest warunek określny w while. Blok warunkowy z IF; Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 2/9

Declare podwyzka number:=300; departament integer:=90; update employees set salary=salary+podwyzka where department_id=departament; commit; Declare srednia number; ilosc_pracownikow integer; select avg(salary), count(*) into srednia, ilosc_pracownikow from employees; pracownik hr.employees%rowtype; pracownik.last_name:='kowalski'; pracownik.first_name:='jan'; dbms_output.put_line(pracownik.last_name ' ' pracownik.first_name); pracownik hr.employees%rowtype; select * into pracownik from hr.employees where employee_id=102; dbms_output.put_line(pracownik.last_name); type raportowy is record( srednia number, liczba_prac integer, maksi number ); raport1 raportowy; select avg(salary), count(*), max(salary) into raport1 from hr.employees; dbms_output.put_line(raport1.srednia); Update tabeli z użyciem dynamicznych wartości. Załadowanie wartości z jednego wiersza do zmiennych. Wykorzystanie zmiennej typu wierszowego. Przypisanie bezpośrednie. Wykorzystanie zmiennej typu wierszowego. Załadowanie danych z bazy. Wykorzystanie własnego typu złożonego z załadowaniem danych z bazy. Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 3/9

cursor kursor is select last_name, first_name from hr.employees; for wiersz in kursor loop dbms_output.put_line(wiersz.last_name); create or replace procedure wyswietl_pracownika is nr_pracownika integer:=190; pracownik hr.employees%rowtype; select * into pracownik from hr.employees where employee_id=nr_pracownika; dbms_output.put_line(pracownik.last_name ' ' pracownik.first_name); Użycie kursora do pobrania więcej niż jednego wiersza z bazy Tworzenie procedury składowanej i dwa sposoby jej wywołania wyswietl_pracownika; execute wyswietl_pracownika; show errors; drop procedure wyswietl_pracownika; create or replace procedure wyswietl_pracownika(x integer) is pracownik hr.employees%rowtype; select * into pracownik from hr.employees where employee_id=x; dbms_output.put_line(pracownik.last_name ' ' pracownik.first_name); wyswietl_pracownika(172); Wyświetlanie błędów kompilacji Kasowanie procedury Tworzenie procedury z parametrem i jej wywołanie. Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 4/9

dbms_output.put_line(10/0); exception when others then dbms_output.put_line('wystapil blad ' sqlerrm); dbms_output.put_line(10/'lubie pierogi'); dbms_output.put_line(10/0); exception when zero_divide then dbms_output.put_line('wystapil blad ' sqlerrm); when others then null; for x in -10..10 loop dbms_output.put_line(x ' ' 1/x); exception when zero_divide then dbms_output.put_line('przez 0 dzieli tylko Chuck Norris'); create or replace function dawaj10 return number is dbms_output.put_line('cos robię...'); return 10; select dawaj10 from dual; Obsługa wszelakich wyjątków Obsługa różna dla różnych wyjątków Obsługa z użyciem bloków zagnieżdżonych Prosta funkcja Sposoby wywołania funkcji x:=dawaj10; dbms_output.put_line(dawaj10); Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 5/9

create or replace function dawajsrednia return number is wynik number; select avg(salary) into wynik from hr.employees; return wynik; Wykorzystanie funkcji select dawajsrednia from dual; select * from hr.employees where salary>dawajsrednia; create or replace function sredniadepartamentu(nr number) return number is wynik number; select avg(salary) into wynik from hr.employees where department_id=nr; return wynik; Funkcja sparametryzowana i sposoby jej wywołania select sredniadepartamentu(90) from dual; Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 6/9

CREATE OR REPLACE PACKAGE RAPORTOWANIE IS PROCEDURE RAPORT_PLACOWY; FUNCTION SREDNIA RETURN NUMBER; FUNCTION SREDNIA(NR INTEGER) RETURN NUMBER; create or replace package body raportowanie is PROCEDURE UTAJNIONA IS BEGIN dbms_output.put_line('najlepsze kasztany!'); Nagłówek pakietu Body pakietu PROCEDURE RAPORT_PLACOWY IS BEGIN utajniona; DBMS_OUTPUT.PUT_LINE('WYKONUJE RAPORT...'); FUNCTION SREDNIA RETURN NUMBER IS BEGIN RETURN 6000; FUNCTION SREDNIA(NR INTEGER) RETURN NUMBER IS BEGIN RETURN 4543*NR/10; create or replace trigger wyzw1 after update on hr.employees dbms_output.put_line('ktos zmienil liste pracownikow!'); Wyzwalacz uruchamiający się w związku ze zdarzeniem update Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 7/9

create or replace trigger wyzw1 after update or insert or delete on hr.employees dbms_output.put_line('ktos zmienil liste pracownikow!'); Wyzwalacz uruchamiający się w związku ze zdarzeniami update, insert i delete create or replace trigger wyzw1 after update or insert or delete on hr.employees dbms_output.put_line('cos sie stalo...'); if updating then dbms_output.put_line('to byl update'); end if; create or replace trigger podwyzkowicz after update on hr.employees for each row if :new.salary>:old.salary then dbms_output.put_line('to byla podwyzka dla Pana/Pani ' :new.last_name); else dbms_output.put_line('to byla obnizka lub brak zmian dla Pana/Pani ' :new.last_name); end if; create or replace trigger dobryszef before update on hr.employees for each row when(new.salary>old.salary) :new.last_name:=:new.last_name ' to sierściuch '; create or replace trigger dobryszef before update on hr.employees for each row when(new.salary>old.salary) Wykorzystanie zmiennych w wyzwalaczach i predykatów takich jak :updating, inserting, deleting Wyzwalacz wierszowy, uruchamiający się dla każdego wiersza osobno Zmiana danych w locie przy użyciu wyzwalacza Warunek na poziomie uruchomienia Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 8/9

:new.last_name:=:new.last_name ' to sierściuch '; Cheatsheet PL/SQL Andrzej Klusiewicz www.jsystems.pl 9/9