PL/SQL. Zaawansowane tematy PL/SQL

Podobne dokumenty
PL/SQL. Zaawansowane tematy PL/SQL

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

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

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

Język PL/SQL Pakiety podprogramów

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

Pakiety podprogramów Dynamiczny SQL

Procedury i funkcje składowane

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

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

Bazy danych, 4. wiczenia

Oracle PL/SQL. Paweł Rajba.

Zaawansowane bazy danych i hurtownie danych semestr I

PODSTAWY BAZ DANYCH 13. 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

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Bloki anonimowe w PL/SQL

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

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

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

Wykład 9. Pakiety w języku PL/SQL

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

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

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

8. Konfiguracji translacji adresów (NAT)

Procedury Funkcje Pakiety. Tworzenie procedury

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

Ćwiczenia 2 IBM DB2 Data Studio

15. Funkcje i procedury składowane PL/SQL

Programowanie serwera Oracle 11g SQL i PL/SQL

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Podprogramy. Rozdział 11 Procedury i funkcje składowane

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

Ładowanie i reorganizacja

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

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

API transakcyjne BitMarket.pl

Podstawy programowania sterowników GeFanuc

Wydział Elektrotechniki, Informatyki i Telekomunikacji

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

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

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

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

Elementy cyfrowe i układy logiczne

Struktura plików wejściowych kontrahenci krajowi i zagraniczni ipko biznes

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

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

ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW

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

Bloki anonimowe w PL/SQL

Tabele wykorzystywane w przykładach

Kursory. A. Pankowska 1

PROGRAM ZAPEWNIENIA I POPRAWY JAKOŚCI AUDYTU WEWNĘTRZNEGO

WYKŁAD 1 SYSTEMY CMS CZĘŚĆ 1

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

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

SQL 4 Structured Query Lenguage

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

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Specyfikacja warunków zamówienia

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

Tablice, procesy, sygnały i nie tylko. Kurs systemu Unix 1

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

Uniwersytet Rzeszowski

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

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

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

HiTiN Sp. z o. o. Przekaźnik kontroli temperatury RTT 4/2 DTR Katowice, ul. Szopienicka 62 C tel/fax.: + 48 (32)

Tytuł pracy. Praca dyplomowa inżynierska. Filip Piechocki. Tytuł Imię i Nazwisko

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

Baza danych. Baza danych jest to zbiór danych powi zanych mi dzy sob pewnymi zale no ciami.

Materiały szkoleniowe dla partnerów. Prezentacja: FIBARO a system grzewczy.

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Microsoft Management Console

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

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

Technologie Informacyjne

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

V. Wymagania dla wsparcia projektu oraz nadzoru eksploatacyjnego... 6

Indeksy. Indeks typu B drzewo

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

Projektowanie bazy danych

Paweł Rajba

Instrukcja obsługi panelu operacyjnego XV100 w SZR-MAX-1SX

SPECYFIKACJA ISTOTNYCH WARUNKÓW ZAMÓWIENIA

SIECI KOMPUTEROWE I BAZY DANYCH

Wykład 4. W tym wykładzie omówimy deklaratywne więzy spójności stanowiące jeden z elementów aplikacji bazy danych po stronie serwera.

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

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

BAZA DANYCH SIECI HOTELI

Oracle Database 10g. Programowanie w jêzyku PL/SQL

Instrukcja Obsługi STRONA PODMIOTOWA BIP

Praca na wielu bazach danych część 2. (Wersja 8.1)

SZABLONY KOMUNIKATÓW SPIS TREŚCI

Składowane procedury i funkcje

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Zaawansowane bazy danych i hurtownie danych semestr I

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Transkrypt:

PL/SQL Zaawansowane tematy PL/SQL

Cele Przypomnienie kursorów Przypomnienie procedur i funkcji składowanych Poznanie pakietów składowanych 2

Bazę danych Oracle możemy traktować jakby była złożona z dwóch powiązanych ze sobą części Interpreter PL/SQL SQL (System Zarządzania bazą danych, RDBMS)

Kursor służy do pobierania danych z bazy danych do kodu PL/SQL KURSOR Interpreter PL/SQL DANE SQL (System Zarządzania bazą danych, RDBMS)

Cykl życia kursorów Otwarcie kursora poleceniem OPEN Zamknięcie kursora poleceniem CLOSE Zamknięty Otwarty Zamknięty Pobieranie danych poleceniem FETCH

Kursory Deklaracja kursora (w sekcji deklaracji) CURSOR nazwa_kursora IS zapytanie_select; Otwarcie kursora OPEN nazwa_kursora Pobranie danych FETCH nazwa_kursora INTO zmienne; Zamknięcie kursora CLOSE nazwa_kursora; 6

Blok PL/SQL - przypomnienie Przypomnienie anonimowego bloku PL/SQL DECLARE deklaracja zmiennych BEGIN instrukcje PL/SQL EXCEPTION obsługa wyjątków END; nie ma nazwy nie jest przechowywany w bazie danych 7

Kod składowany - przypomnienie Zestaw instrukcji realizujący pewną funkcjonalność Przechowywany w bazie danych jako obiekt bazodanowy Posiada nazwę Tworzony za pomocą instrukcji CREATE OR REPLACE 8

Porównanie anonimowego bloku PL/SQL i procedury składowanej PL/SQL DECLARE deklaracja zmiennych BEGIN instrukcje PL/SQL EXCEPTION obsługa wyjątków END; CREATE OR REPLACE PROCEDURE nazwa IS deklaracja zmiennych BEGIN instrukcje PL/SQL EXCEPTION obsługa wyjątków END; 9

Kod składowany ORACLE PROCEDURA FUNKCJA PAKIET PROCEDURA PAKIET FUNKCJA PROCEDURA

Kod składowany W języku PL/SQL wyróżniamy następujące typy kodu składowanego: procedury funkcje pakiety wyzwalacze 11

Procedura - przypomnienie Zestaw instrukcji realizujący pewną funkcjonalność. Może przyjmować dowolną ilość parametrów wejściowych i zwracać dowolną ilość parametrów wyjściowych. Przykładem procedury jest procedura DBMS_OUTPUT.PUT_LINE(tekst)

Procedura WYŚLIJ(ADRES, TREŚĆ); PARAMETRY ADRES TREŚĆ PROCEDURA WYŚLIJ(, )

Procedura - przypomnienie Budowa procedury CREATE OR REPLACE PROCEDURE nazwa_procedury (parametr1 IN/OUT typ, parametr2 IN/OUT typ, ) IS deklaracja zmiennych BEGIN instrukcje PL/SQL EXCEPTION obsługa wyjątków END; 14

Przykład listy parametrów CREATE OR REPLACE PROCEDURE test_parametrow ( pn_parametr1 IN NUMBER, ps_parametr2 OUT VARCHAR2, pd_parametr3 IN OUT DATE, pn_parametr4 OUT NUMBER, pn_parametr5 IN VARCHAR2 ) 15

Lista parametrów Parametry wejściowe umożliwiają wprowadzanie danych do procedury PROCEDURE test (ps_wej1 IN VARCHAR2, ps_wej2 IN NUMBER); PROCEDURA TEST Dane do przetworzenia test( alfa,5)

Przykład demonstrujący parametr wejściowy W procedurze z parametru wejściowego możemy tylko odczytywać dane, nie możemy do parametru wejściowego danych zapisywać. CREATE OR REPLACE PROCEDURE wyswietl(ps_t IN VARCHAR2) IS BEGIN DBMS_OUTPUT.put_line(ps_t); END; 17

Przykład demonstrujący parametr wejściowy CREATE OR REPLACE PROCEDURE wyswietl (ps_t IN VARCHAR2) BEGIN wyswietl(ps_t => Hello world! ); END; 18

Lista parametrów Parametry wyjściowe umożliwiają zapisanie wyników pracy procedury do zmiennych w kodzie zewnętrznym PROCEDURE test (ps_wyj1 OUT VARCHAR2, ps_wyj2 OUT NUMBER); PROCEDURA TEST Wyniki procedury test test(ls_a, ln_b)

Przykład demonstrujący parametr wyjściowy W procedurze do parametru wyjściowego możemy tylko zapisywać, nie możemy danych odczytywać. Dane zostają zapisane w zmiennych w kodzie zewnętrznym. CREATE OR REPLACE PROCEDURE format_sysdate(ps_f OUT VARCHAR2) IS BEGIN ps_f := TO_CHAR(SYSDATE, YYYY-MONTH-DD ); END; 20

Przykład demonstrujący parametr wyjściowy CREATE OR REPLACE PROCEDURE format_sysdate (ps_f OUT VARCHAR2) DECLARE ls_formatted_date VARCHAR2(50); BEGIN format_sysdate (ps_f => ls_formatted_date); dbms_output.put_line ( Dzis jest ls_formatted_date); END; 21

Lista parametrów Parametry wejściowo-wyjściowe umożliwiają modyfikowanie wartości zmiennych w kodzie zewnętrznym PROCEDURE test (ps_wyj1 IN OUT VARCHAR2, PROCEDURA TEST ps_wyj2 IN OUT NUMBER); test(ls_a, ln_b)

Przykład demonstrujący parametr wejściowo-wyjściowy W procedurze parametr wejściowo-wyjściowy możemy odczytywać oraz możemy do niego zapisywać. W ten sposób modyfikujemy zmienne w kodzie zewnętrznym przypisane do tego parametru. CREATE OR REPLACE PROCEDURE add_10(pn_liczba IN OUT NUMBER) IS BEGIN pn_liczba := pn_liczba+10; END; 23

Przykład demonstrujący parametr wejściowo-wyjściowy DECLARE ln_a NUMBER := 1; BEGIN add_10(pn_liczba => ln_a); dbms_output.put_line( 1+10= ln_a); END; CREATE OR REPLACE PROCEDURE add_10 (pn_liczba IN OUT NUMBER) 24

Funkcja - przypomnienie Zestaw instrukcji realizujący pewną funkcjonalność i zwracający pewną wartość Może przyjmować dowolną ilość parametrów wejściowych i zwracać dowolną ilość parametrów wyjściowych. Przykładem funkcji jest funkcja TO_NUMBER(tekst, format)

Funkcja C := DODAJ (A, B); PARAMETRY A B WYNIK C FUNKCJA DODAJ(, )

Przykład demonstrujący funkcję Funkcja musi zwracać wartość. Typ wartości zwracanej przez funkcję definiujemy za pomocą wyrażenia RETURN typ_wyniku. Wartości zwracamy za pomocą instrukcji RETURN <wartość>. CREATE OR REPLACE FUNCTION add_10(pn_liczba IN NUMBER) RETURN NUMBER IS BEGIN RETURN pn_liczba+10; END; 27

Przykład demonstrujący funkcję DECLARE ln_a NUMBER := 1; ln_b NUMBER; BEGIN ln_b := add_10(ln_a); dbms_output.put_line( 1+10= ln_b); END; CREATE OR REPLACE FUNCTION add_10(pn_liczba IN NUMBER) RETURN NUMBER ; 28

Kod składowany - przypomnienie Może być wykorzystywany przez inne programy Umożliwia dekompozycję programu na mniejsze części Ułatwia projektowanie i naprawianie błędów Ułatwia ponowne użycie kodu w innych systemach 29

Organizacja kodu bez użycia pakietów ORACLE PROCEDURA PROCEDURA FUNKCJA FUNKCJA PROCEDURA FUNKCJA PROCEDURA PROCEDURA

Organizacja kodu przy użyciu pakietów ORACLE PAKIET PROCEDURA PROCEDURA PROCEDURA PROCEDURA FUNKCJA PAKIET PROCEDURA FUNKCJA FUNKCJA

Organizacja kodu BEZ UŻYCIA PAKIETÓW AKTUALIZUJ_LICZNIK_ KILOMETROW DAJ_PREMIE_ PRACOWNIKOWI DODAJ_SAMOCHOD USUŃ_SAMOCHOD ZATRUDNIJ_PRACOWNIKA ZWOLNIJ_PRACOWNIKA PRZY UŻYCIU PAKIETÓW Pakiet PRACOWNIK: DAJ_PREMIE ZATRUDNIJ ZWOLNIJ Pakiet SAMOCHOD: AKTUALIZUJ_ LICZNIK_KILOMETROW DODAJ USUŃ

Budowa pakietu Pakiet składa się z dwóch części z nagłówka i z ciała NAGŁÓWEK PAKIETU (PACKAGE) CIAŁO PAKIETU (PACKAGE BODY)

Nagłówek pakietu Nagłówek pakietu zawiera deklaracje typów, zmiennych, kursorów, procedur, funkcji Obiekty zadeklarowane w nagłówku pakietu są publiczne Kod zewnętrzny może odwoływać się do obiektów zadeklarowanych w nagłówku pakietu Przez kod zewnętrzny rozumiemy procedury, funkcje, inne pakiety, wyzwalacze, bloki anonimowe 34

Nagłówek pakietu Do nagłówka pakietu może odwoływać się kod zewnętrzny Nagłówek pakietu Typ publiczny Kod zewnętrzny Zmienna globalna publiczna Deklaracja procedury publicznej Deklaracja funkcji publicznej 35

Nagłówek pakietu Konstrukcja nagłówka pakietu CREATE OR REPLACE PACKAGE nazwa_pakietu IS deklaracje typów; deklaracje zmiennych; deklaracje kursorów; deklaracje procedur i funkcji; END; 36

Nagłówek pakietu W nagłówku deklarujemy procedury i funkcje publiczne. Deklaracja procedury lub funkcji to tylko nagłówek procedury lub funkcji, deklaracja nie zawiera instrukcji. Kod tych procedur i funkcji znajduje się w ciele pakietu. Deklaracja procedury i funkcji: PROCEDURE wyswietl(tekst IN VARCHAR2); FUNCTION dodaj_10 (a IN NUMBER) RETURN NUMBER; 37

Nagłówek pakietu Przykład nagłówka pakietu. Nagłówek pakietu nie zawiera kodu PL/SQL. CREATE OR REPLACE PACKAGE nazwa_pakietu IS gs_tekst VARCHAR2(2000); PROCEDURE nazwa_procedury (parametry); FUNCTION nazwa_funkcji (parametry) RETURN typ_danych_zwracanych; END; 38

Ciało pakietu Nazwa ciała pakietu musi być identyczna z nazwą nagłówka pakietu Jest nieobowiązkowy w pakiecie Odpowiada za implementację logiki pakietu zawiera kod PL/SQL Kod zewnętrzny może uruchamiać tylko te procedury i funkcje, które są zadeklarowane w specyfikacji pakietu 39

Pakiet Nagłówek pakietu - obiekty publiczne Ciało pakietu definicje, kod PL/SQL Typ publiczny Zmienna globalna publiczna Deklaracja procedury publicznej Deklaracja funkcji publicznej Typ prywatny Zmienna globalna prywatna Definicja procedury publicznej Definicja funkcji publicznej Definicja procedury prywatnej 40

Ciało pakietu Musi zawierać implementację wszystkich zadeklarowanych w nagłówku procedur i funkcji. Wszystkie parametry funkcji i procedur zadeklarowanych w nagłówku muszą się zgadzać z parametrami funkcji i procedur zdefiniowanych w ciele pakietu 41

Ciało pakietu Może zawierać dodatkowe obiekty (typów, zmiennych, kursorów, procedur, funkcji), ale będą to obiekty prywatne, niedostępne z zewnątrz pakietu Do obiektów prywatnych odwoływać mogą się inne obiekty wewnątrz ciała pakietu 42

Ciało pakietu Przykład konstrukcji ciała pakietu CREATE OR REPLACE PACKAGE BODY nazwa_pakietu IS zmienna_prywatna NUMBER; PROCEDURE nazwa_procedury (parametry) IS BEGIN END; ciąg dalszy -> 43

Ciało pakietu Przykład konstrukcji ciała pakietu FUNCTION nazwa_funkcji (parametry) RETURN typ_danych_zwracanych IS BEGIN END; END; 44

Pakiet bazodanowy CREATE OR REPLACE PACKAGE test IS pub1 VARCHAR2(100); CURSOR pub2 IS SELECT * FROM EMPLOYEES; PROCEDURE pub3; FUNCTION pub4 RETURN NUMBER; END; CREATE OR REPLACE PACKAGE BODY test IS pryw1 NUMBER; CURSOR pryw2 IS SELECT * FROM EMPLOYEES; PROCEDURE pryw3; PROCEDURE pub3; FUNCTION pub4 RETURN NUMBER; END;

Korzystanie z pakietów Uruchamianie procedury z pakietu BEGIN nazwa_pakietu.nazwa_procedury(parametry); END; Korzystanie ze zmiennej globalnej publicznej BEGIN nazwa_pakietu.nazwa_zmiennej := 5; END; 46

Korzystanie z pakietów Uruchamianie funkcji z pakietu w zapytaniu SQL SELECT nazwa_pakietu.nazwa_funkcji(parametry) FROM employees WHERE Korzystanie z typu zdefiniowanego w pakiecie DECLARE zmienna nazwa_pakietu.nazwa_typu... BEGIN 47

Korzystanie z pakietów Uruchamianie procedury w innej procedurze PROCEDURE test IS BEGIN nazwa_pakietu.nazwa_procedury(parametry); Uruchamianie procedury w innej procedurze tego samego pakietu nie wymaga podania nazwy pakietu PROCEDURE proc_w_tym_samym_pakiecie BEGIN nazwa_procedury(parametry); 48

Usuwanie kodu składowanego Kod składowany usuwamy za pomocą poleceń: DROP PROCEDURE nazwa_procedury; DROP FUNCTION nazwa_funkcji; DROP PACKAGE nazwa pakietu; DROP PACKAGE BODY nazwa pakietu; 49