Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Podobné dokumenty
PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Text úlohy. Systémový katalog (DICTIONARY):

SQL - trigger, Databázové modelování

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

10. Architektura klient/server a třívrstvá architektura

10. Architektura klient/server a třívrstvá architektura

Virtual Private Database (VPD) Jaroslav Kotrč

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Jazyk PL/SQL Úvod, blok

Semestrální práce z DAS2 a WWW

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Kód v databázi. RNDr. Ondřej Zýka

Popis souboru pro generování reportů *.report

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Virtual private database. Antonín Steinhauser

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

2-3 hodiny. Při studiu tohoto bloku se předpokládá, že čtenář je obeznámen s jazykem SQL a zná základy jazyka PL/SQL.

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Univerzita Pardubice. Fakulta elektrotechniky a informatiky SEMESTRÁLNÍ PRÁCE PRO PŘEDMĚT IDAS2

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Databázové systémy. 9. přednáška

Databázové systémy Cvičení 5.2

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

8.2 Používání a tvorba databází

Optimalizace dotazů a databázové transakce v Oracle

Univerzita Pardubice. Fakulta elektrotechniky a informatiky

Databáze I. Přednáška 4

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Databázové systémy. Cvičení 6: SQL

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY

Databázové systémy I

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Dotazovací jazyky I. Datová krychle. Soběslav Benda

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Úvod do databázových systémů

Operátory ROLLUP a CUBE

4. lekce Přístup k databázi z vyššího programovacího jazyka

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

1. Webový server, instalace PHP a MySQL 13

Základní přehled SQL příkazů

MySQL sežere vaše data

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev

Nasazení Object Relation Mapping nástrojů nad legacy datovým modelem

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

Jazyk SQL databáze SQLite. připravil ing. petr polách

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

Verzování a publikace dat na webu za pomoci PostgreSQL

Mechanismus obarvení řádků browse

Sada 1 - PHP. 14. Úvod do jazyka SQL

Databázové systémy úvod

Databáze II. 2. přednáška. Helena Palovská

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Databázové systémy a SQL

Administrace Oracle. Práva a role, audit

PL/pgSQL. Pavel

SQL. Pohledy, ochrana dat,... Pavel Tyl

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Virtuální privátní databáze

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Kapitola 6: Omezení integrity. Omezení domény

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

PG 9.5 novinky ve vývoji aplikací

Tabulka fotbalové ligy

Databáze I. Přednáška 7

řízení transakcí 2-3 hodiny

Access. Tabulky. Vytvoření tabulky

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

KIV/ZIS cvičení 6. Tomáš Potužák

Použití databází na Webu

SQL injection jak ji možná neznáte Roman Kümmel

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

Embedded SQL v C/C++ III - pole, struktury. Jindřich Vodrážka

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Budte chytří při vytváření aplikací

6. SQL složitější dotazy, QBE

O Apache Derby detailněji. Hynek Mlnařík

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

FIREBIRD relační databázový systém. Tomáš Svoboda

Databáze I. Přednáška 9

Databáze SQL SELECT. David Hoksza

Deklarativní IO shrnutí minulé přednášky

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

Ukázka knihy z internetového knihkupectví

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY

Transkript:

, Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Demo-cvičení pro IDS 9. dubna 2014 Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 1 / 2014 18

Obsah 1 Stored Procedures & Database Triggers 2 Tvorba tiskových sestav Spuštění tiskových sestav 3 Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 2 / 2014 18

Stored Procedures & Database Triggers Uložené procedury/funkce pro zpracování dat v databázi. (na rozdíl od zpracování až v aplikaci využívající databázi) pro složitá integritní omezení a reakce. (spouští se v reakci na plánované nebo provedené změny dat) Obojí je uloženo v databázi, jsou to objekty schématu databáze. (tj. na db. serveru, sdílené přistupujícími aplikacemi) Procedura a trigger obsahují blok kódu v jazyce PL/SQL. (po hlavičce následuje struktura DECLARE, BEGIN, END) Bloky PL/SQL jsou prováděny atomicky. (tj. bud se provede vše, nebo nic, např. při vyvolání výjimky) Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 4 / 2014 18

PL/SQL Engine v Oracle Database (diagram převzat z Oracle8i Concepts, Release 8.1.5) Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 5 / 2014 18

Uložené procedury create [or replace] procedure jmenoproc(param1 [in out in out] typ,... ) is... replace vhodnější než drop a create protože stejný objekt (např. nezruší práva definovaná nad objektem atp., což by drop udělal) parametry mohou být vstupní, výstupní, nebo vstupně výstupní (pokud neuvedeno in, out, nebo in out, tak jsou implicitně jen vstupní) datový typ může být odkaz na datový typ sloupce nějaké tabulky (toto funguje i jinde v PL/SQL, např. pro deklaraci proměnných uvnitř bloku) za datovým typem může být nastavena hodnota DEFAULT expr create or replace PROCEDURE reset_study( student IN STUDY.STUDENT_ID%TYPE, program IN STUDY.PROGRAM_CODE%TYPE DEFAULT IT-BC-3 ) IS initial_year STUDY.YEAR%TYPE := 1; BEGIN update study set year = initial_year where student_id = student and program_code = program; END; Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 6 / 2014 18

Uložené funkce Stored Procedures & Database Triggers create [or replace] fucntion jmenofce(... ) return typ is... parametry a tělo stejně jako u uložené procedury (vč. vstupních a výstupních parametrů, atd.) typ návratové hodnoty nesmí mít uvedenu délku či přesnost (délka či přesnost dle místa volání funkce, resp. uložení její návratové hodnoty) může vracet také celou tabulku, datový typ pak tabulka objektů (tzv. pipelined table functions ) create or replace FUNCTION first_year_students_count( program IN STUDY.PROGRAM_CODE%TYPE DEFAULT IT-BC-3 ) RETURN int IS initial_year STUDY.YEAR%TYPE := 1; students_count int; BEGIN select count(*) into students_count from study where year = initial_year and program_code = program; return students_count; END; Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 7 / 2014 18

Spouštění uložených procedur a funkcí Procedury i funkce lze volat přímo v PL/SQL blocích. (v anonymních blocích, procedurách, fcích, či triggerech, ale i v Oracle Forms) Volání funkce v PL/SQL bloku musí uchovat návratovou hodnotu. (např. do proměnné prostředí, tj. přiřadit volání fce pom. := do proměnné) Funkce lze navíc volat z SQL dotazů či příkazů. (tj. v SELECT/UPDATE/DELETE, např. SELECT fce(123) FROM dual;) DECLARE v_return int; BEGIN v_return := FIRST_YEAR_STUDENTS_COUNT( PROGRAM => IT-BC-3 ); :output_variable_return = v_return; END; (při volání v SQLDeveloper, je výsledek viditelný v záložce Output Variables) Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 8 / 2014 18

Triggery vyvolány modifikací dat tabulky (nebo pohledu). (vázány na akci DELETE/INSERT/UPDATE tabulky nebo pohledu) před nebo po modifikaci každého řádku ovlivněného akcí (tj. BEFORE/AFTER akce DELETE/INSERT/UPDATE ) před, po, nebo místo akce, která vyvolala trigger (tj. BEFORE/AFTER/INSTEAD OF akce DELETE/INSERT/UPDATE ) Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 9 / 2014 18

Pořadí volání triggerů Při akci DELETE/INSERT/UPDATE nad tabulkou/pohledem 1 jsou zavolány triggery BEFORE DELETE/INSERT/UPDATE 2 jsou zavolány triggery INSTEAD OF DELETE/INSERT/UPDATE nebo jsou pro každý řádek tabulky ovlivněný akcí jsou zavolány 1 triggery BEFORE DELETE/INSERT/UPDATE FOR EACH ROW 2 triggery AFTER DELETE/INSERT/UPDATE FOR EACH ROW 3 jsou zavolány triggery AFTER DELETE/INSERT/UPDATE V těle triggerů FOR EACH ROW jsou dostupná původní a nová (modifikovaná) data pomocí proměnných prostředí :NEW a :OLD. Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 10 / 2014 18

Použítí triggerů Stored Procedures & Database Triggers Automatické generování obsahů sloupců. (např. IF :NEW.sloupec IS NULL THEN :NEW.sloupec := myseq.nextval;) Ošetření nesprávných transakcí. (např. raise_application_error(-20000, error msg );) Dosažení komplexní autorizace. Zvýšení referenční integrity. Transparentní záznam událostí. Auditing. Replikace dat. Statistika přístupu k tabulkám. Triggery lze pověsit na více akcí akce, která vyvolala trigger, lze odlišit v kódu pom. predikátů INSERTING, DELETING a UPDATING. Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 11 / 2014 18

Příklad triggeru Stored Procedures & Database Triggers create or replace trigger new_student before insert on student for each row declare default_login STUDENT.LOGIN%TYPE; begin if :new.id is null then :new.id := student_id.nextval; end if; if :new.login is null then :new.login := dbms_random.string( x,8); elsif length(trim(:new.login))!= 8 then raise_application_error(-20000, Login has to have 8 characters! ); end if; end; Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 12 / 2014 18

Oracle Reports Stored Procedures & Database Triggers Tvorba tiskových sestav Spuštění tiskových sestav Oracle Reports umožňují jednoduchou tvorbu tiskových sestav. (s výstupem do HTML nebo přímo na tiskárnu, tj. Canvas/PS/PDF) Data pro sestavu z tzv. datového modelu. (definuje query a navazující group bloky, souhrny, atd.) Dotaz může být v rámci datového bloku parametrizovaný. (parametry jako proměnné prostředí se pak zadávají při volání sestavy) Výsledná sestava vypíše data z modelu pak podle šablony. (Web & Paper Layout šablony pro sestavy) Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 14 / 2014 18

Tvorba tiskových sestav Spuštění tiskových sestav Tvorba sestav pomocí Report Wizard 1 V reportu zvolit menu Tools / Report Wizard. 2 Vybrat vhodný Layout a Style. (papírový/web layout a styl dle zobrazovaných dat, např. výpis se seskupováním) 3 Zvolit jako zdroj dat SQL Query a zadat SQL dotaz. (v dotazu možno použít parametry jako proměnné prostředí, tj. uvozené : ) 4 Vybrat sloupec výsledku, podle kterého se bude seskupovat. (vhodné pro layouts se seskupováním, např. Grou Left layout) 5 Vybrat sloupce výsledku, které se zobrazí v sestavě. 6 Vybrat sloupec výsledku, kde se budou aplikovat agregační fce. (např. pro celkový počet záznamů, max/min hodnoty, atp.) 7 Zvolit nadpisy datových polí a šablonu vizualizace. 8 Uložit report pom. menu File / Save as jako *.rdf. (původní formát, lépe odlišitelný než novější *.jsp) Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 15 / 2014 18

Spuštění tiskové sestavy Tvorba tiskových sestav Spuštění tiskových sestav V Oracle pomocí menu Program / Run Web/Paper Layout. (pokud dotaz s parametry, tak vyzve k jejich zadání) Z Oracle Forms pomocí PL/SQL kódu více video-tutoriál (pomocí RUN_REPORT_OBJECT & WEB.SHOW_DOCUMENT built-ins) DECLARE v_report_id Report_Object; vc_report_job_id VARCHAR2(100); vc_rep_status VARCHAR2(100); BEGIN v_report_id := find_report_object( myreportmodule ); SET_REPORT_OBJECT_PROPERTY(v_report_id, REPORT_OTHER, myparam= :mylocalvar); vc_report_job_id := RUN_REPORT_OBJECT(v_report_id); vc_rep_status := REPORT_OBJECT_STATUS(vc_report_job_id); IF vc_rep_status = FINISHED THEN web.show_document( /<virtual path>/<servlet name>/getjobid= vc_report_job_id?server= <ReportServerTnsName>, _blank ); ELSE message ( Report failed with error message vc_rep_status); END IF; END; Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 16 / 2014 18

pro práci s daty na straně databáze. Triggery pro akce před/po/místo modifikace dat. Oracle Reports pro tvorbu tiskových sestav. Dokumentace: Oracle8i Concepts R8.1.5, Procedures and Packages Oracle Database PL/SQL Language Reference 11gR2, PL/SQL Triggers Oracle Reports Documentation nápověda v Oracle Forms/Reports Developer... a další na webových stránkách předmětu Marek Rychlý Stored Procedures & Database Triggers, Demo-cvičení pro IDS, 9. dubna 18 / 2014 18