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

Podobne dokumenty
Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Język PL/SQL Pakiety podprogramów

Pakiety podprogramów Dynamiczny SQL

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

Oracle PL/SQL. Paweł Rajba.

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

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

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

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

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

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL

Bloki anonimowe w PL/SQL

Procedury i funkcje składowane

Zaawansowane bazy danych i hurtownie danych semestr I

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

PODSTAWY BAZ DANYCH 13. PL/SQL

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

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

15. Funkcje i procedury składowane PL/SQL

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

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

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

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

Procedury Funkcje Pakiety. Tworzenie procedury

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

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

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

Podprogramy. Rozdział 11 Procedury i funkcje składowane

DECLARE VARIABLE zmienna1 typ danych; BEGIN

BAZA DANYCH SIECI HOTELI

Bloki anonimowe w PL/SQL

Oracle PL/SQL. Paweł Rajba.

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

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

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

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

Hurtownia Świętego Mikołaja projekt bazy danych

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

Składowane procedury i funkcje

Oracle11g: Programowanie w PL/SQL

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

ZASTOSOWANIE PROCEDUR, FUNKCJI I PAKIETÓW

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

Bazy danych, 4. wiczenia

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;

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

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

1. ELEMENTY JĘZYKA PL/SQL

Ćwiczenia 2 IBM DB2 Data Studio

Oracle 12c: Nowości w SQL i PL/SQL

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

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

Język SQL, zajęcia nr 1

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

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

BAZY DANYCH W APLIKACJACH SIECIOWYCH

Oracle10g: Programowanie w PL/SQL

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

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

1. Wyzwalacze BD (ang. triggers)

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

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

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

SQL 4 Structured Query Lenguage

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Ada-95. Dariusz Wawrzyniak

Oracle PL/SQL. Paweł Rajba.

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.

Indeksy. Indeks typu B drzewo

Deklarowanie kursora

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

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

Bazy danych - Materiały do laboratoriów VIII

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

Wstęp do programowania 2

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

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

Tabele wykorzystywane w przykładach

Oracle PL/SQL. Paweł Rajba.

Widok Connections po utworzeniu połączenia. Obszar roboczy

Technologie baz danych WYKŁAD 7: Wyjątki

Język PL/SQL Wprowadzenie

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

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.

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

BAZY DANYCH Cz III. Transakcje, Triggery

Kursory. A. Pankowska 1

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

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

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

2 PL/SQL - podstawy Zmienne i stałe Operatory SQL w PL/SQL Instrukcje sterujące... 8

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

Bazy Danych i Usługi Sieciowe

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

Obiektowe bazy danych

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

SYSTEM INFORMATYCZNY KS-SEW

Transkrypt:

Pakiety Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiet składa się ze: specyfikacji (interfejsu) i ciała (implementacji). W specyfikacji mieszczą się deklaracje typów, zmiennych, stałych, kursorów, wyjątków i podprogramów. W ciele mieści się implementacja specyfikacji. Specyfikacja i ciało pakietu są oddzielnie przechowywane w słowniku danych.

Pakiety umożliwiają: 1. przechowywanie powiązanych ze sobą obiektów w jednym miejscu, 2. grupowanie logicznej funkcjonalności, 3. łatwe projektowanie aplikacji: kodowanie i kompilacja oddzielnie specyfikacji i ciała, 4. ukrywanie informacji: tylko deklaracje w specyfikacji są jawne i dostępne dla aplikacji, prywatne deklaracje w ciele pakietu są ukryte, kod jest ukryty w ciele pakietu.

Zalety pakietów: zwiększenie wydajności (przy pierwszym odwołaniu do pakietu cała jego zawartość jest ładowana do pamięci), dodatkowa funkcjonalność udostępniają zmienne globalne, umożliwiają przeciążanie procedur i funkcji, ukrycie informacji użytkownikowi jest udostępniana tylko specyfikacja pakietu (interfejs), natomiast implementacja procedur i funkcji jest niewidoczna,

Pakiety Specyfikacja pakietu Ciało pakietu Deklaracja zmiennych Deklaracja procedury lub funkcji itd. Deklaracja zmiennych Definicja procedury lub funkcji itd. publiczne prywatne

Specyfikacja pakietu Specyfikacja pakietu - cechy Inaczej nagłówek pakietu. Jest to interfejs do aplikacji. Zawiera informacje o zawartości pakietu, ale bez kodu podprogramów. Może zawierać deklarację publicznych typów, zmiennych, stałych, wyjątków, kursorów. W specyfikacji pakietu obowiązują te same zasady, co w sekcji deklaracji bloku anonimowego.

Definiowanie specyfikacji pakietu Specyfikacja: CREATE OR REPLACE PACKAGE nazwa_pakietu IS deklaracje typów, stałych, zmiennych, kursorów i wyjątków dostępnych na zewnątrz pakietu deklaracje funkcji i procedur np. CREATE OR REPLACE PACKAGE kraj IS TYPE KrajTyp IS RECORD ( kraj_id CHAR(2), kraj_nazwa VARCHAR2(40), rejon_id INT); CURSOR kraje(r_id INT) RETURN KrajTyp; ile INT; PROCEDURE dodajkraj(k_id IN CHAR, nazwa VARCHAR2, rejon_id INT DEFAULT 1); PROCEDURE wypiszkraj(r_id INT DEFAULT 1);

Specyfikacja pakietu - uwagi W specyfikacji można inicjalizować zmienne, inaczej dostają one wartość NULL. Wszystkie konstrukcje zadeklarowane w specyfikacji pakietu są publicznie dostępne dla wszystkich użytkowników, którzy mają prawo do pakietu. Kolejność deklaracji w pakiecie jest dowolna, ale elementy, które są używane w kodzie, muszą być zadeklarowane wcześniej. Deklaracja w części specyfikacyjnej to tzw. deklaracja uprzedzająca jest to opis programu, ale bez kodu. Pakiet nie musi zawierać deklaracji wszystkich elementów wszystkich rodzajów, np. może zawierać tylko zmienne i kursory.

Ciało pakietu Ciało pakietu jest zapisywane oddzielnie w słowniku danych. Zawiera kody deklaracji uprzedzających z nagłówka pakietu. Każda deklaracja z nagłówka musi mieć odzwierciedlenie w ciele, specyfikacja procedur i funkcji w obu częściach pakietu musi być dokładnie taka sama jeśli chodzi o nazwę podprogramu, nazwy parametrów i ich typy. W ciele pakietu mogą się znajdować dodatkowe deklaracje (których nie było w specyfikacji), np. typy, zmienne, kursory, wyjątki. Tak zadeklarowane elementy są widoczne tylko w danym ciele pakietu.

Definiowanie pakietu Ciało: CREATE OR REPLACE PACKAGE BODY nazwa_pakietu IS deklaracje lokalnych typów, zmiennych, stałych, wyjatków i kursorów definicje procedur i funkcji BEGIN części inicjalizacyjna pakietu / opcjonalnie np.

CREATE OR REPLACE PACKAGE BODY kraj IS CURSOR kraje(r_id INT) RETURN KrajTyp IS SELECT * FROM countries WHERE region_id=r_id; PROCEDURE dodajkraj(k_id IN CHAR,nazwa VARCHAR2,rejon_id INT DEFAULT 1) IS BEGIN INSERT INTO countries VALUES (k_id,nazwa,rejon_id); PROCEDURE wypiszkraj(r_id INT DEFAULT 1) IS BEGIN FOR kraj IN kraje(r_id) LOOP Dbms_Output.put_line( kraj.kraj_id kraj.kraj_nazwa); END LOOP;

Przykład (z dokumentacji Oracle) Specyfikacja: CREATE OR REPLACE PACKAGE emp_actions IS TYPE EmpRecTyp IS RECORD (emp_id INT, salary REAL); CURSOR desc_salary RETURN EmpRecTyp; PROCEDURE hire_employee ( ename VARCHAR2, job VARCHAR2, mgr NUMBER, sal NUMBER, comm NUMBER, deptno NUMBER); PROCEDURE fire_employee (emp_id NUMBER);

Ciało: CREATE OR REPLACE PACKAGE BODY emp_actions IS CURSOR desc_salary RETURN EmpRecTyp IS SELECT empno, sal FROM emp ORDER BY sal DESC; PROCEDURE hire_employee ( ename VARCHAR2, job VARCHAR2, mgr NUMBER, sal NUMBER, comm NUMBER, deptno NUMBER) IS BEGIN INSERT INTO emp VALUES (empno_seq.nextval, ename, job, mgr, SYSDATE, sal, comm, deptno); PROCEDURE fire_employee (emp_id NUMBER) IS BEGIN DELETE FROM emp WHERE empno = emp_id;

Odwołanie do funkcji/procedury zawartej w pakiecie należy poprzedzić nazwą pakietu, o ile odwołujemy się do danej funkcji/procedury z zewnątrz pakietu, np. EXECUTE kraj.wypiszkraj(2); Kompilowanie pakietu: ALTER PACKAGE nazwa COMPILE PACKAGE PACKAGE BODY; Usuwanie pakietu: DROP PACKAGE PACKAGE BODY nazwa;

Użycie pakietów do deklarowania zmiennych globalnych Jeżeli specyfikacja pakietu nie zawiera deklaracji kursorów ani podprogramów (procedur, funkcji), a jedynie typy, stałe, zmienne i wyjątki, wówczas nie ma konieczności tworzenia ciała pakietu, np.: CREATE OR REPLACE PACKAGE klientdane IS TYPE DaneKlTyp IS RECORD ( nr customer.cust_no%type, nazwa customer.customer%type, tel customer.phone_no%type, adres VARCHAR2(60), miasto VARCHAR2(35), kraj customer.country%type, kod_pocztowy customer.postal_code%type); min_oplata CONSTANT NUMBER:= 100.00; ile INT; brak_oplaty EXCEPTION; Tego typu pakiet umożliwia zdefiniowanie typów i zmiennych globalnych, do których można się odwoływać z podprogramów oraz wyzwalaczy, w obrębie danej sesji.

Przeciażanie podprogramów z pakietów W pakiecie mogą znajdować się funkcje lub procedury o takiej samej nazwie, ale w wersjach z różnymi parametrami, Pozwala to na stosowanie tych samych operacji do różnych typów obiektów, Parametry muszą się różnić w liczbie, kolejności lub typie, np. CREATE OR REPLACE PACKAGE pracownik IS FUNCTION srednia_zarobkow(id_dzialu NUMBER) RETURN NUMBER; FUNCTION srednia_zarobkow(id_dzialu NUMBER, id_managera NUMBER) RETURN NUMBER;

Ograniczenia przeciażania Nie można utworzyć dwóch podprogramów jeśli parametry różnią się tylko nazwą lub trybem: PROCEDURE A (p_1 IN NUMBER); PROCEDURE A (p_1 OUT NUMBER); Nie można utworzyć dwóch funkcji jeśli różnią się tylko typem zwracanej wartości: FUNCTION B RETURN NUMBER; FUNCTION B RETURN DATE; Parametry podprogramów muszą należeć do różnych rodzin typów, np. takie przeciążanie jest niedozwolone: PROCEDURE C (p_1 IN CHAR); PROCEDURE C (p_1 IN VARCHAR2);