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

Slides:



Advertisements
Podobné prezentace
Databázové systémy 2 Cvičení č. 8
Advertisements

Databázové systémy 2 Cvičení č. 9 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Fakulta elektrotechniky a informatiky
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Databázové systémy 2 Zkouška :00. Příklad I Vytvořte proceduru ZK_TRPASLICI_PLNENI(datum_od VARCHAR2, datum_do VARCHAR2), která na standardní.
SQL Structured Query Language
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Architektury a techniky DS Cvičení č. 4 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Temporální databáze a TSQL
PL/SQL Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd. Rozšířením jazyka SQL.
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. 4, 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Cvičení V Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_HR_ODDELENI (p_oddeleni_id NUMBER). Funkce vrátí řetězec, obsahující.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Databázové systémy 1 Cvičení č. 9 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 2 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 08:00. Příklad I – Funkce – 4 body Vytvořte funkci F_ZK1(p_id_zamestnance NUMBER) RETURN VARCHAR2. Daná funkce.
Architektury a techniky DS Efektivní programování v jazyce PL/SQL
Databázové systémy 2 Zkouška :00. Příklad I IDAS2 – zkouška :00 2 Vytvořte proceduru ZK_TRP_PRODUKTIVITA(P_DATUM_OD IN VARCHAR2,
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Cvičení č. 10 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 08:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK3(p_oddeleni_id_from NUMBER, p_oddeleni_id_to NUMBER,
Databázové systémy II Cvičení č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 8:00. Příklad I - Procedura Vytvořte proceduru PROCEDURE ZK_ZAM_HISTOGRAM(P_ROK_OD IN NUMBER, P_ROK_DO IN NUMBER)
Databázové systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK4(p_oddeleni_id_from NUMBER, p_oddeleni_id_to NUMBER)
Databázové systémy 2 Zkouška – 12:00. Příklad I - Funkce Vytvořte funkci ZK_TRP_TREND(P_ID_TRPASLIKA IN NUMBER, P_DATUM_OD IN VARCHAR2, P_DATUM_DO.
Databázové systémy I Cvičení č. 7 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_TRP_TREND(P_ID_TRPASLIKA IN NUMBER, P_DATUM_OD IN VARCHAR2, P_DATUM_DO.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
KIV/ZIS cvičení 4 Tomáš Potužák. Dotazy - úvod Umožňují pracovat s databází –Získávat specifické informace z tabulky, případně z více tabulek najednou.
Databázové systémy SQL Výběr dat.
Databázové systémy 2 Cvičení č. 4 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 2 Zkouška – 8:00. Příklad I - Procedura Vytvořte proceduru PROCEDURE ZK_ZAM_HISTOGRAM(P_ROK_OD IN NUMBER, P_ROK_DO IN NUMBER)
Databázové systémy 2 Cvičení IV Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky
Databázové systémy 2 Zkouška – 12:00. Příklad I - Funkce Vytvořte funkci ZK_IS_COLUMN_FK(P_TABLE_NAME IN VARCHAR2, P_COLUMN_NAME IN VARCHAR2)
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Architektury a techniky DS Cvičení č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Databázové systémy a SQL
Databázové systémy a SQL
Přednáška 9 Triggery.
Databázové systémy a SQL
Transkript prezentace:

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

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

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 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 LOOP x := dbms_random.random; dbms_output.put_line(x); rn := x; END LOOP; dbms_random.terminate; END; /

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

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

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í – 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

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

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:

Databázové systémy 2 – cvičení 6 10 Cvičení 6 – Příklad IV -Vytvořte proceduru CV6_LIDE_SEZNAM(P_VEK IN NUMBER, P_POHLAVI IN VARCHAR2). -Procedura bude vypisovat seznam lidí z tabulky A_CLOVEK.lide dle zadaných parametrů. Parametr p_vek udává minimální věk vypisovaného člověka a p_pohlavi udává jeho pohlaví. -Zároveň ošetřete (pomocí výjimky) případ, kdy proceduře budou předány neplatné parametry. Za platné parametry se považuje věk mezi 0 až 120 lety a pohlaví může nabývat hodnot M a F. Text vypsaný při vyvolání výjimky bude: „Zadány špatné parametry!“. -Výpis bude seřazen vzestupně podle příjmení a jména. -Výpis:

Databázové systémy 2 – cvičení 6 11 Cvičení 6 – Zásady pro vypracování -Dodržujte názvy objektů i jejich atributů přesně dle zadání. -Pro příklady I-III využívejte jako zdroj dat schéma A_SNEHURKA. -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.

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 12