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

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

Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.

Podobné prezentace


Prezentace na téma: "Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice."— Transkript prezentace:

1 Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa (tomas.vana@student.upce.cz) Fakulta elektrotechniky a informatiky Univerzita Pardubice

2 Obsah cvičení -Práce s DBMS_OUTPUT. -Explicitní a implicitní kurzory. -Kurzory s parametrem. -Záznamy. -Definice procedur. Databázové systémy 2 – cvičení 6 2

3 Cvičení 6 Základní používání DBMS_OUTPUT: DECLARE i_text VARCHAR2(100) DEFAULT 'Ahoj světe!'; i_cislo NUMBER(10,8); BEGIN dbms_output.put_line(i_text); i_text := NULL; dbms_output.put_line(i_text); i_cislo := 22/7; dbms_output.put_line(i_cislo); i_text := 'Nový text'; i_text := i_text || ' ' || i_cislo; dbms_output.put_line(i_text); END; / Databázové systémy 2 – cvičení 5 3 Databázové systémy 2 – cvičení 6 3

4 4 Cvičení 6 Příklad používání DBMS_RANDOM: DECLARE x PLS_INTEGER; rn NUMBER(20); BEGIN SELECT hsecs INTO rn FROM gv$timer; dbms_random.initialize(rn); FOR i IN 1..20 LOOP x := dbms_random.random; dbms_output.put_line(x); rn := x; END LOOP; dbms_random.terminate; END; /

5 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ř. 4, 5 5

6 Procedury Příklad definice procedury CREATE [OR REPLACE] PROCEDURE zvyseni_mzdy (procento IN NUMBER) AS BEGIN UPDATE pracovnici SET mzda = mzda * (1+procento/100); 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ř. 4, 5 6

7 Databázové systémy 2 – cvičení 6 7 Cvičení 6 – Příklad I -Vytvořte proceduru CV6_NASTAV_PLATY, která vloží záznamy do tabulky cv6_trpaslici_plat(id_trpaslika NUMBER(2,0),plat NUMBER(8,2)), kterou si vytvoříte ve vašem schématu. -Tabulka cv6_trpaslici_plat bude obsahovat kromě identifikátoru trpaslíka i jeho vypočtený plat. Plat bude vypočten tak, že za každý skutečně vytěžený kg v období 5.2.2006 – 25.2.2006 obdrží trpaslík 1,25 zlaťáku. Výjimkou jsou trpaslíci, jejichž výška je méně než 110 cm, ti obdrží paušálně navíc 30 zlaťáků. Pro naplnění tabulky využijte explicitního kurzoru. Kromě toho procedura navíc vypíše na výstupní zařízení informaci o tom, kolik bylo trpaslíkům celkem vyplaceno. -Viz ukázka: Výdaje: 4323,75

8 Databázové systémy 2 – cvičení 6 8 Cvičení 6 – Příklad II -Vytvořte proceduru CV6_MIN_MAX_PLAT, která na výstup vypíše trpaslíky, jejichž mzda byla nejnižší a nejvyšší. -Pro údaje o mzdě trpaslíka využijte vámi naplněnou tabulku cv6_trpaslici_plat. -Výstup by měl být v následujícím formátu: Nejvyšší plat: Rypal - 808,75 zlatých Nejnižší plat: Brucoun - 356,25 zlatých

9 Databázové systémy 2 – cvičení 6 9 Cvičení 6 – Příklad III -Vytvořte proceduru CV6_TRPASLIK_VLASTNOSTI. -Procedura bude vkládat záznamy do tabulky CV6_TRPASLICI_VLASTNOSTI(jmeno VARCHAR2(20), vlastnosti VARCHAR2(100)), kterou si vytvoříte ve vlastním schématu. Pro každého trpaslíka vznikne v tabulce jeden záznam (i kdyby žádné vlastnosti trpaslík neměl), který bude obsahovat jeho jméno a zřetězený seznam vlastností oddělený středníkem (vlastnost1;vlastnost2;…;). -Pro naplnění tabulky využijte implicitní kurzory. -Příklad z naplněné tabulky:

10 Databázové systémy 2 – cvičení 6 10 Cvičení 6 – Příklad IV -Vytvořte proceduru CV6_TRPASLICI_ZEBRICEK. -Procedura CV6_TRPASLICI_ZEBRICEK (OD VARCHAR2, DO VARCHAR2) vypíše (na standardní výstup) žebříček nejvýše tří trpaslíků, kteří v zadaném období (parametry od, do) vytěžili absolutně nejvíce rudy. -Parametry od, do zadejte pomocí řetězce, jejich převod na datový typ DATE realizujte až uvnitř procedury. -Na prvním řádku výstupu uveďte, za jaké období je žebříček sestaven. Formát: Výpis za období od - do: -Dále bude následovat samotné pořadí trpaslíku. Vždy se objeví maximálně 3 trpaslíci. Viz ukázka na následujícím snímku.

11 Databázové systémy 2 – cvičení 6 11 Cvičení 6 – Příklad IV

12 Databázové systémy 2 – cvičení 6 12 Cvičení 6 – Příklad V -Vytvořte proceduru CV6_TEZBY_RUDY. -Procedura CV6_TEZBY_RUDY (P_RUDA VARCHAR2) vypíše (na standardní výstup) přehled těžeb pro rudu zadanou parametrem za každý den, kdy se daná ruda těžila. -Výstup bude seřazen vzestupně, podle data těžby. Ve výstupu se objeví suma všech těžeb v daný den spolu s počtem trpaslíků, kteří danou rudu ten den těžili. -Výstup má následující formát: -Datum(formát DD-MM-YYYY): suma_tezeb kg (počet_trp.) -Procedura nerozlišuje, jakými písmeny byl parametr p_ruda zadán. Tzn., že pro proceduru jsou parametry „Železná“ a „ŽELEZNÁ“ rovnocenné.

13 Databázové systémy 2 – cvičení 6 13 Cvičení 6 – Příklad V

14 Databázové systémy 2 – cvičení 6 14 Cvičení 6 – Zásady pro vypracování -Dodržujte názvy objektů i jejich atributů přesně dle zadání. -Pro příklady využívejte jako zdroj dat schéma A_O_SNEHURCE. -V příkladech v nichž vkládáte data do vašich tabulek, nezapomínejte vámi vložená data potvrzovat ( COMMIT ). -U procedur, které vkládají data do tabulek, je vhodné provést vymazaní všech dat z cílových tabulek před samotným vkládáním nových dat. Předejdete tím vzniku duplicitních záznamů způsobených opakovaným spouštěním procedur.

15 A_O_SNEHURCE Databázové systémy 1 – cvičení 7 15

16 Cvičení 6 – kontrola Všechny databázové objekty z tohoto cvičení vytvořte se svém schématu. Pro splnění cvičení je nutné, aby všechny objekty byly správně vytvořeny a funkční do půlnoci dne před následujícím cvičením. Databázové systémy 2 – cvičení 6 16


Stáhnout ppt "Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice."

Podobné prezentace


Reklamy Google