Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilVratislav Pešan
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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.