Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky

Podobné prezentace


Prezentace na téma: "Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky"— Transkript prezentace:

1 Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky david.zak@upce.cz david.zak@upce.cz

2 Procedury Procedura je posloupnost příkazů, které se provedou v okamžiku spuštění procedury. Na základě vstupních parametrů jsou vráceny výsledky v podobě výstupních parametrů. Syntaxe CREATE [OR REPLACE] PROCEDURE [( )] AS … deklarační sekce …………………………. BEGIN … výkonná sekce …………………………. EXCEPTION … sekce pro zpracování výjimek …………………………. END; Databázové systémy 2 - př. 6 2

3 Procedury Příklad definice procedury CREATE [OR REPLACE] PROCEDURE zvyseni_mzdy (procento IN NUMBER) AS BEGIN UPDATE pracovnici SET mzda = mzda * (1+procento/100); COMMIT; END; Příklad spuštění procedury EXECUTE zvyseni_mzdy(6); nebo EXEC zvyseni_mzdy(6); nebo BEGIN zvyseni_mzdy(6); END; Databázové systémy 2 - př. 6 3

4 Funkce Funkce na rozdíl od procedur dokáží vrátit nějakou hodnotu, která je ve většině případů vypočítána v těle funkce. Syntaxe CREATE [OR REPLACE] FUNCTION [( )] RETURN AS … deklarační sekce …………………………. BEGIN … výkonná sekce …………………………. RETURN ; EXCEPTION … sekce pro zpracování výjimek …………………………. END; Databázové systémy 2 - př. 6 4

5 Funkce Příklad CREATE [OR REPLACE] FUNCTION pocet_smen (Id_trp IN NUMBER) RETURN NUMBER AS v_pocet NUMBER; BEGIN SELECT count(*) INTO v_pocet FROM tezby WHERE Id_trpaslika=Id_trp AND skutecnost>0; RETURN v_pocet ; END; Použití funkce SELECT Jmeno, pocet_smen(Id) Pocet_smen FROM trpaslici; Databázové systémy 2 - př. 6 5

6 Používání balíků Výhody balíků -Zvětšují obor názvů – může být použit stejný název procedury v různých balících -V jednom balíku může být mnoho procedur, ale v datovém slovníku bude existovat pouze jeden objekt – balík, namísto jednoho objektu slovníku pro každou proceduru nebo funkci bez použití balíků -Podporují zapouzdření, části kódu (podřízené rutiny), které nemají využití mimo balík, jsou ukryty v balíku a mimo něj nejsou viditelné a jsem jediným, kdo je může zobrazit -Podporují proměnné uchovávané po celou dobu relace - můžete mít proměnné, které si udrží své hodnoty mezi jednotlivými voláními v databázi -Podporují spouštěcí kód – tj. úsek kódu, který se provede při prvním odkazu na balík v relaci, tj. umožňuje automatické provedení složitého inicializačního kódu -Umožňují seskupení souvisejících funkcí Databázové systémy 2 - př. 6 6

7 Balíky Balík má 2 části -specifikaci balíku (interface k aplikacím) -tělo balíku Ve specifikaci jsou deklarovány typy, proměnné, konstanty, výjimky, kurzory a podprogramy pro použití. Tělo úplně definuje kurzory a subprogramy – implementační detaily a privátní deklarace, které jsou neviditelné z aplikace. Je možné změnit tělo balíku bez změny specifikace a tím vlastně neovlivnit vazbu na další aplikace. Programy volající balík nemusí být rekompilovány při změně těla balíku (tzv. balíky přerušují řetězec závislostí). Databázové systémy 2 - př. 6 7

8 Struktura balíků Databázové systémy 2 - př. 6 8

9 Balíky - syntaxe CREATE PACKAGE name AS -- specification (visible part) -- public type and item declarations -- subprogram specifications END [name]; CREATE PACKAGE BODY name AS -- body (hidden part) -- private type and item declarations -- subprogram bodies [BEGIN -- initialization statements] END [name]; Databázové systémy 2 - př. 6 9

10 Veřejné a privátní elementy balíků Databázové systémy 2 - př. 6 10

11 Balíky - odkazování Referencing Package Contents package_name.type_name package_name.item_name package_name.subprogram_name Databázové systémy 2 - př. 6 11

12 Balíky Příklady například http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/intro.htm#sthref18 http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/packages.htm#sthref1849 Databázové systémy 2 - př. 6 12


Stáhnout ppt "Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky"

Podobné prezentace


Reklamy Google