Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky

Slides:



Advertisements
Podobné prezentace
Vlastní skript může být umístěn: v hlavičce stránky v těle stránky
Advertisements

Dynamické dokumenty na straně klienta Informatika pro ekonomy II.
Základy jazyka SQL Jan Tichava
Programování funkcí v Excelu
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Přednáška č. 5 Proces návrhu databáze
Fakulta elektrotechniky a informatiky
Algoritmizace a programování Podprogramy v Delphi - 10
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í.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Informatika pro ekonomy II přednáška 11
Fakulta elektrotechniky a informatiky
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
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.
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
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Temporální databáze a TSQL
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
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.
Úvod do databází Databáze.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Databázové systémy 2 Cvičení č. 7 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
Databázové systémy II Přednáška č. 4, 5 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Procedurální rozšíření Transact SQL Michal Kopecký Výběr ze slajdů k 3. přednášce předmětu Databázové Aplikace (DBI026) na MFF UK.
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
Vypracoval: Ondřej Dvorský Třída: VIII.A
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 I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
Databázové systémy 2 Cvičení č. 6 Ing. Tomáš Váňa Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy II Přednáška č. X Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
Ing. Tomáš Váňa, Ing. Jiří Zechmeister
Ing. Tomáš Váňa, Ing. Jiří Zechmeister
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
2 Ing. Jan Keprt Centrální správa uživatelů 3 Jak to bylo dosud Bylo třeba nastavení uživatelů provést zvlášť, v každém modulu samostatně. Uživatel si.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Copyright (C) 1999 VEMA počítače a projektování, spol. s r.o.1 Lucián Piller Intranet HR.
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
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 – 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.
Databázové systémy SQL Výběr dat.
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
Architektury a techniky DS Cvičení č. 6 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Podprogramy (subroutines) Pojmenované kousky programu, které –tvoří logicky ucelené části –se v programu opakují Jsou zapsány na jednom místě a v případě.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
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 II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky

Obsah přednášky PL/SQL Subprogramy (PL/SQL Subprograms) – Procedury – Funkce Balíčky Přizpůsobení chybových podmínek 2 IDAS2 - Přednáška V

PL/SQL Subprograms PL/SQL subprogram je pojmenovaný PL/SQL blok. – Takto pojmenovaný blok může být volán s množinou parametrů. – Subprogram může být procedurou nebo funkcí. – Subprogram lze vytvořit na úrovni schématu, balíčku nebo uvnitř jiného bloku PL/SQL (který též může byt subprogram). Důvody k používaní PL/SQL subprogramů – Rozšiřují možnosti PL/SQL. – Modularizace – Znuvupoužitelnost – Specifická forma zapouzdření 3 IDAS2 - Přednáška V

PL/SQL Subprograms Používání procedur může zvýšit výkon: – Zpracování složitých byznys pravidel lze přesunout do databáze. Přesun zpracování z aplikace na klienta navíc sníží komunikační zátěž mezi klientem a databázovým serverem. – Procedurální kód je v databázi uchováván v poměrně statické formě, proto lze těžit z opětovného využití stejných dotazů. Kromě toho procedury umožňují konsolidovat byznys pravidla uvnitř databáze. – Není nutné je zapisovat do různých aplikaci. IDAS2 - Přednáška V 4

PL/SQL Subprograms Součásti subprogramu: – Subprogram má vždy jméno; může obsahovat seznam parametrů. – Deklarační část - není explicitně definována. Za deklarační část subprogramu se považuje vše mezi hlavičkou subprogramu a výkonou částí. – Výkonná část a část obsluhy výjimek jsou stejné jako u PL/SQL bloku. 5 IDAS2 - Přednáška V

PL/SQL Subprograms - práva Potřebná systémová oprávnění – CREATE PROCEDURE Při vytváření procedurálního objektu je nutné mít práva ke všem referencovaným objektům uvnitř objektu. Uživatel pak musí mít nad daným objektem právo EXECUTE. Spuštěná procedura pak může běžet ve dvou režimech. – S právy definujícího uživatele (definer rights) - procedura běží se všemi právy definujícího uživatele, tudíž volajícímu uživateli stačí mít jen právo na spuštění samotné procedury. – S právy volajícího uživatele (invoker righs) - procedura spoléhá na to, že volající uživatel má práva ke všem definovaným objektům uvnitř procedury. IDAS2 - Přednáška V 6

Procedury Syntaxe: CREATE [OR REPLACE] PROCEDURE [( )] AS … deklarační sekce …………………………. BEGIN … výkonná sekce …………………………. EXCEPTION … sekce pro zpracování výjimek …………………………. END; 7 IDAS2 - Přednáška V

Procedury Příklad: CREATE [OR REPLACE] PROCEDURE zvyseni_mzdy (procento IN NUMBER) AS BEGIN UPDATE pracovnici SET mzda = mzda * (1+procento/100); COMMIT; END; IDAS2 - Přednáška V 8

Procedury Volání procedury: EXECUTE zvyseni_mzdy(6); nebo EXEC zvyseni_mzdy(6); nebo BEGIN zvyseni_mzdy(6); END; 9 IDAS2 - Přednáška V

Funkce Syntaxe CREATE [OR REPLACE] FUNCTION [( )] RETURN AS … deklarační sekce …………………………. BEGIN … výkonná sekce …………………………. RETURN ; EXCEPTION … sekce pro zpracování výjimek …………………………. END; 10 IDAS2 - Přednáška V

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; 11 IDAS2 - Přednáška V

Procedury vs. funkce - deklarace Velmi podobné struktura definice, až na následující rozdíly: – Hlavička funkce musí obsahovat klauzuli RETURN, která specifikuje návratový typ funkce. Hlavička procedury nesmí obsahovat klauzuli RETURN. – Funkce musí mít alespoň jeden příkaz RETURN ve výkonné části. Pro procedury je využití příkazu RETURN uvnitř výkonné sekce volitelné. 12 IDAS2 - Přednáška V

Procedury vs. funkce - použití Funkci, oproti proceduře lze využít v libovolném příkaze DML. Při volaní funkce z DML příkazu platí následující omezení: – Pokud je funkce volána z příkazu SELECT, nebo z paralelizovaných příkazů INSERT, UPDATE a DELETE, nesmí funkce modifikovat data v libovolné tabulce databáze. – Pokud je funkce volána z příkazů INSERT, UPDATE a DELETE, nesmí funkce modifikovat tabulky, které modifikují volající příkazy. – Pokud je funkce volána z příkazů SELECT, INSERT, UPDATE a DELETE, nesmí funkce využívat příkazy pro řízení transakcí (např. COMMIT). To automaticky vylučuje využití DDL příkazů uvnitř těchto funkcí. 13 IDAS2 - Přednáška V

Příkaz RETURN Příkaz RETURN okamžitě ukončí vykonávání PL/SQL subprogramu a vrátí řízení nad během programu volajícímu. Každý subprogram může obsahovat více RETURN příkazů. Provedení jediného z nich má za následek okamžité ukončení subprogramu. V proceduře nesmí obsahovat RETURN příkaz žádný výraz. Naopak příkaz RETURN uvnitř funkce musí obsahovat výraz. 14 IDAS2 - Přednáška V

Parametry Parametry subprogramů mohou fungovat ve třech režimech: – IN, IN OUT a OUT IN mód – Výchozí mód. Není nutné definovat. – Parametr se pak pro subprogram chová jako konstanta. Nemůže ji být přiřazena hodnota. OUT mód – Přes OUT parametr je možné vrátit volajícímu hodnotu ze subprogramu -> procedura pak může vracet hodnotu. – Z pohledu subprogramu se OUT parametr chová jako běžná proměnná. Lze měnit její hodnotu. – Volající subprogram pak musí do OUT parametru přiřadit proměnnou. Nesmí se jednat o konstantu či výraz. IN OUT mód – Kombinace IN a OUT. 15 IDAS2 - Přednáška V

Parametry 16 OUT a IN OUT se doporučuje používat pouze u procedur. Funkce by měla vracet vždy jen jednu hodnotu. IDAS2 - Přednáška V

Parametry - výchozí hodnoty IN parametrům je možné přiřadit výchozí hodnotu. – Tyto parametry je pak možné při volání vypustit. 17 IDAS2 - Přednáška V

Balíčky Balíček (PACKAGE) je databázový objekt logicky seskupující PL/SQL typy, proměnné a subprogramy. Každý balíček se skládá ze dvou částí – specifikace („SPEC“) - rozhraní balíčku. Deklaruje vše co má být viditelné z „venku“ – těla (BODY) - obsahuje implementaci objektů definovaných ve specifikaci a obsahuje též privátní objekty balíčku. 18 IDAS2 - Přednáška V

Balíčky 19 IDAS2 - Přednáška V

20 IDAS2 - Přednáška V

Balíčky - využívání 21 IDAS2 - Přednáška V

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í 22 IDAS2 - Přednáška V

Přizpůsobení chybových podmínek U každé chybové podmínky, kterou definujete, můžete navolit chybovou zprávu, jež se v případě výskytu chyby zobrazí. Čísla chyb a zprávy, které se uživateli zobrazí, nastavíte v proceduře RAISE_APPLICATION_ERROR, kterou lze volat z libovolného procedurálního objektu. Procedura RAISE_APPLICATION_ERROR má dvě vstupní hodnoty: číslo chybové zprávy a text zprávy. – Číslo chyba a text chyby si můžete nastavit sami. – Ke standardním výjimkách PL/SQL tak získáváte možnost přidat vlastní výjimky. – Číslo vlastní chyby musí být v rozsahu až IDAS2 - Přednáška V 23

RAISE_APPLICATION_ERROR IDAS2 - Přednáška V 24

RAISE_APPLICATION_ERROR IDAS2 - Přednáška V 25