Tento blok je věnován vytváření uživatelských balíků funkcí v jazyce PL/SQL a použití systémových balíků. 2-3 hodiny

Podobné dokumenty
13. blok Práce s XML dokumenty v databázi Oracle

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

6. blok část B Vnořené dotazy

Jazyk PL/SQL Úvod, blok

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

Ukládání a vyhledávání XML dat

6. blok část C Množinové operátory

Oracle XML DB. Tomáš Nykodým

4. blok část A Logické operátory

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

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

Maturitní otázky z předmětu PROGRAMOVÁNÍ

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

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

1. Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13

2. blok část A Jazyk SQL, datové typy

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

Virtuální privátní databáze

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

Ukázka knihy z internetového knihkupectví

Databázové systémy úvod

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Kurz je rozdělen do čtyř bloků, které je možné absolvovat i samostatně. Podmínkou pro vstup do kurzu je znalost problematiky kurzů předešlých.

Použití databází na Webu

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

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

Virtual private database. Antonín Steinhauser

Virtual Private Database (VPD) Jaroslav Kotrč

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

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

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

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

Semestrální práce z DAS2 a WWW

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Programování a implementace Microsoft SQL Server 2014 databází

Administrace Oracle. Práva a role, audit

10 Balíčky, grafické znázornění tříd, základy zapozdření

řízení transakcí 2-3 hodiny

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

InterSystems Caché Post-Relational Database

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

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

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Abstraktní datové typy Objektový přístup v Oracle

8 Třídy, objekty, metody, předávání argumentů metod

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

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

Stěhování aplikací. Michal Tomek, Sales Manager

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

Objektově relační databáze a ORACLE 8

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

Zabezpečení proti SQL injection

Vstupní požadavky, doporučení a metodické pokyny

5. blok Souhrnné a skupinové dotazy

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Zranitelnost databáze a ochrana vašich citlivých dat. Michal Lukanič, Database Specialist

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

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

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

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

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

Archivace relačních databází

Databázové systémy BIK-DBS

Cestovní zpráva. Program akce: Průběh akce. O Anopress

Administrace Oracle Práva a role, audit. Kukhar Maria

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

Business Intelligence

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

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

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

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

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

Programování v C++ 2, 4. cvičení

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

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Sdílení dat mezi podprogramy

Zabezpečení proti SQL injection

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

Co se stane po jeho vykonání? Vyberte libovolný počet možných odpovědí. Správná nemusí být žádná, ale také mohou být správné všechny.

MBI - technologická realizace modelu

2. blok Zabezpečení a ochrana dat

Administrace Oracle - Správa zdrojů

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

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

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

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

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

Transkript:

8. blok Balíky. Systémové balíky. Studijní cíl Tento blok je věnován vytváření uživatelských balíků funkcí v jazyce PL/SQL a použití systémových balíků. Doba nutná k nastudování 2-3 hodiny Průvodce studiem Při studiu tohoto bloku se předpokládá, že čtenář je obeznámen s vytvářením a použitím procedur a funkcí v jazyce PL/SQL. 1. Balíky Balíky jsou konstrukcí v PL/SQL, která umožňuje ukládat spolu související objekty. Balíky mají 2 samostatné části - specifikaci a tělo. Každá z těchto částí se ukládá do datového slovníku samostatně. Balíky také zjednodušují závislosti mezi databázovými objekty. Ve specifikaci jsou deklarovány typy, proměnné, konstanty, výjimky, kurzory a podprogramy pro použití. Specifikace balíku obsahuje informaci o obsahu balíku, ale neobsahuje žádný kód podprogramů. 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í). Syntaxe specifikace i těla balíku je ukázána na obr. 1 a 2. Adresace jednotlivých částí balíku: [<schéma>.]<název_balíku>.< ma>.]<název_balíku>.<název_typu> [<schéma>.]<název_balíku>.< ma>.]<název_balíku>.<název_procedury> [<schéma>.]<název_balíku>.< ma>.]<název_balíku>.<název_funkce> [<schéma>.]<název_balíku>.< ma>.]<název_balíku>.<název_proměnné> 1

Obr. 1. Syntaxe zápisu specifikace balíku Zdroj: Oracle. Obr. 2. Syntaxe zápisu těla balíku Zdroj: Oracle. 2

Balíky mohou mít kromě veřejných částí také části privátní, ať už jde o procedury, funkce či proměnné. Privátní části balíku jsou přístupné pouze pro podprogramy v balíku a nemohou být volány externími programy, jak ukazuje následující obrázek. 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 datového slovníku pro každou proceduru nebo funkci v případě nevyužití balíků Podporují zapouzdření, části kódu (podřízené rutiny), které nemají využití mimo balíček, jsou ukryty v balíku a mimo něj nejsou viditelné 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í Přerušují řetězec závislostí - v běžném případě při změně definice databázového objektu se zneplatní všechny databázové objekty na něm i nepřímo závislé, k jejich rekompilaci dochází poté při jejich prvním dalším použití. V případě použití balíků je zneplatněno v takovém případě pouze tělo balíku, které je na redefinovaném objektu závislé. Objekty, které jsou na daném balíku závislé, však závisí na specifikaci balíku a nikoli na jeho těle. Proto tyto objekty zůstávají nadále platné a vlastní balíky přeruší řetězec závislostí. 3

Příklad balíku (zdroj Oracle): CREATE OR REPLACE PACKAGE emp_actions AS -- package specification PROCEDURE hire_employee (employee_id NUMBER, last_name VARCHAR2, first_name VARCHAR2, email VARCHAR2, phone_number VARCHAR2, hire_date DATE, job_id VARCHAR2, salary NUMBER, commission_pct NUMBER, manager_id NUMBER, department_id NUMBER); PROCEDURE fire_employee (emp_id NUMBER); FUNCTION num_above_salary _salary (emp_id NUMBER) RETURN NUMBER; END emp_actions; CREATE OR REPLACE PACKAGE BODY emp_actions AS -- package body -- code for procedure hire_employee PROCEDURE hire_employee (employee_id NUMBER, last_name VARCHAR2, first_name VARCHAR2, email VARCHAR2, phone_number VARCHAR2, hire_date DATE, job_id VARCHAR2, salary NUMBER, commission_pct NUMBER, manager_id NUMBER, department_id NUMBER); IS BEGIN INSERT INTO employees VALUES (employee_id, last_name, first_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id); END hire_employee; -- code for procedure fire_employee PROCEDURE fire_employee (emp_id NUMBER) IS BEGIN DELETE FROM employees WHERE employee_id = emp_id; END fire_employee; -- code for function num_above salary FUNCTION num_above_salary (emp_id NUMBER) RETURN NUMBER IS emp_sal NUMBER(8,2); num_count NUMBER; BEGIN SELECT salary INTO emp_sal FROM employees WHERE employee_id = emp_id; SELECT COUNT(*) INTO num_count FROM employees WHERE salary > emp_sal; RETURN num_count; END num_above_salary; END emp_actions; 4

2. Systémové balíky Vestavěné, někdy také nazývané jako systémové balíky, nabízí různé možnosti při řešení problémů. Některé balíky jsou napsány v jazyku C, jsou tedy rychlé a nabízí přímý přístup k jádru. Některé z balíků jsou velice složité. V následujících odrážkách se stručně seznámíme s některými z nich. Níže uvedené balíky vlastní uživatel SYS. Tyto balíky mají veřejné synonymum, a proto není nutné uvádět jméno schématu při jejich použití. Již například ve verzi Oracle 10g Release 2 bylo přibližně 200 systémových balíků. V těchto balících je mnoho podprogramů, které významně rozšiřují možnosti práce s daty, jejich konverze, administraci serveru a podobně. Databázový server již v dnešní době zdaleka není jen prostým bezpečným úložištěm dat, ale umožňuje i plnit řadu dalších funkcí a může na něm být řešena i nemalá část aplikační logiky. Byť právě tato poslední jmenovaná možnost je předmětem mnoha diskusí mezi programátory a databázovými specialisty. V tabulce níže následuje výběr několika desítek vestavěných balíčků, aby si uživatel udělal představu o možnostech, které vestavěné balíčky nabízí. 5

Název balíku DBMS_CRYPTO DBMS_DDL DBMS_DEBUG DBMS_EPG DBMS_ERRLOG DMBS_FILE_TRANSFER DMBS_FLASHBACK DBMS_JAVA DBMS_JOB DBMS_LDAP DBMS_LDAP_UTL DBMS_LOB DBMS_METADATA DBMS_OLAP DBMS_OUTPUT DBMS_RANDOM DBMS_RLS DBMS_ROWID DBMS_SCHEDULER DBMS_SESSION DBMS_SQL DBMS_SQLTUNE DBMS_STAT_FUNCS DBMS_STATS DBMS_TRACE Popis Umožňuje šifrování a dešifrování uložených dat Poskytuje přístup k některým SQL DDL z uložených procedur. Implementuje server-side debuggery a poskytuje způsob, jak ladit server-side PL / SQL programových jednotek. Implementuje vloženou PL / SQL bránu, která umožňuje webovému prohlížeči vyvolat PL / SQL uložené procedury pomocí listeneru HTTP. Poskytuje proceduru, která umožňuje vytvářet tabulku pro protokolování chyb tak, aby DML operace mohla pokračovat i po vzniku chyby, bez potřeby odrolování transakce. Umožňuje zkopírovat binární soubor v rámci databáze nebo přenést binární soubor mezi databázemi. Umožňuje flashback na verzi databáze při stanoveném čase nebo zadaném system change numberu (SCN). Poskytuje PL / SQL rozhraní pro přístup k databázi z Javy. Umožňuje naplánovat administrativní postupy, které mají být provedeny v pravidelných intervalech, ale je také rozhraní pro pracovní fronty. Poskytuje funkce a postupy pro přístup k datům z LDAP serveru. Poskytuje Oracle Extension funkce utility pro LDAP. Poskytuje obecné rutiny pro operace s LOB objekty - BLOB, CLOB (čtení / zápis), a BFILEs (pouze pro čtení). Umožňuje snadno získat kompletní definice databázových objektů (metadata) ze slovníku. Poskytuje postupy pro souhrny, dimense a přepisy dotazů. Akumulace informace ve vyrovnávací paměti tak, že to může být načtena později. Poskytuje vestavěný generátor náhodných čísel. Poskytuje administrativní rozhraní pro řešení bezpečnosti na úrovni řádků tabulky. Poskytuje postupy k vytvoření ROWID a interpretaci jejich obsahu. Poskytuje množinu plánovacích funkcí, které jsou volatelné z jakéhokoliv PL / SQL programu. Poskytuje přístup k SQL ALTER SESSION a další informace o relaci z uložených procedur. Umožňuje použít dynamické SQL pro přístup k databázi. Poskytuje rozhraní pro ladění SQL příkazů. Poskytuje statistické funkce. Poskytuje mechanismus pro uživatele k prohlížení a úpravě statistik optimalizátoru shromážděných pro databázové objekty. Poskytuje rutiny pro spuštění a zastavení PL/SQL trasování. 6

DBMS_XMLDOM DBMS_XMLGEN DBMS_XMLPARSER DMBS_XMLQUERY DBMS_XMLSAVE DBMS_XMLSCHEMA DBMS_XMLSTORE DBMS_XPLAN Vysvětluje přístup k objektům XMLType Převede výsledky SQL dotazu do kanonického formátu XML. Vysvětluje přístup k obsahu a struktuře XML dokumentů. Poskytuje databáze-na-xmltype funkce. Poskytuje XML-na-databázi funkce. Vysvětluje procedury k registraci a odstranění XML schémat. Umožňuje ukládání XML dat v relačních tabulkách. Popisuje, jak formátovat výstup příkazu EXPLAIN PLAN. DBMS_XSLPROCESSOR Vysvětluje přístup k obsahu a struktuře XML dokumentů. HTMLDB_ITEM HTMLDB_UTIL HTP Umožňuje uživatelům vytvářet formulářové prvky dynamicky založené na SQL dotazu místo vytváření jednotlivých položek stránku po stránce. Poskytuje nástroje pro získání a nastavení stavu relace, stahování souborů, kontrolu autorizace uživatelů, obnovení různých stavů uživatelů, a také získání a nastavení předvoleb pro uživatele. Hypertextové procedury pro generování HTML tagů. UTL_DBWS UTL_ENCODE UTL_FILE UTL_HTTP UTL_I18N UTL_INADDR UTL_LMS UTL_MAIL UTL_SMTP UTL_TCP UTL_URL XMLType Poskytuje databázové webové služby. Poskytuje funkce, které kódují RAW data do standardního formátu kódování tak, aby data mohla být přepravována mezi počítači. Umožňuje vašim PL/SQL programům čtení a zápis textových souborů operačního systému. Umožňuje HTTP volání z PL/SQL a SQL pro přístup k datům na internetu nebo volání Oracle webového serveru. Poskytuje sadu služeb (Oracle Globalization Service), která pomáhá vývojářům vytvářet vícejazyčné aplikace. Poskytuje procedury na podporu internetové adresace. Načítá a formátuje chybové zprávy v různých jazycích. Nástroj pro správu e-mailů, který obsahuje běžně používané e- mailové funkce, jako například přílohy, CC, BCC, a doručenky. Poskytuje PL/SQL funkce pro odesílání e-mailů. Poskytuje PL / SQL funkce pro podporu jednoduché TCP/IPkomunikace mezi servery a vnějším světem. Poskytuje escape a unescape mechanismy pro URL znaky. Popisuje typy a funkce používané pro podporu nativního XML na serveru. 7

Pojmy k zapamatování Příkazy a funkce: PL/SQL, balíky, řetězec závislostí Problém: balíky pro uložení souvisejících objektů, závislosti mezi databázovými objekty Shrnutí V této lekci jste se seznámili s principy balíků a s vybranými systémovými balíky. Balíky zvětšují obor názvů, zjednodušují závislosti databázových objektů přerušují řetězec závislostí, podporují zapouzdření, privátní proměnné a podprogramy, podporují proměnné uchovávané po celou dobu relace, spouštěcí kód a seskupení souvisejících funkcí. Otázky na procvičení 1. K čemu v PL/SQL slouží balíky? 2. Jaké informace se o balících vyskytují v datovém slovníku? 3. Jaké elementy mohou balíky obsahovat? 4. Jmenujte příklady 10 systémových balíků? 5. Jakým způsobem mění balíky řetězec zavilostí mezi databázovými objekty? Odkazy a další studijní prameny http://docs.oracle.com/cd/b19306_01/appdev.102/b14261/packages.htm# i2432 (syntaxe balíků a jejich možnosti v Oracle 10g R2) http://docs.oracle.com/cd/b19306_01/appdev.102/b14258/intro.htm#i101 0103 (seznamy systémových balíků v Oracle 10g R2) http://www.oracle-base.com/articles/misc/autonomoustransactions.php http://www.techonthenet.com/oracle (syntaxe příkazů SQL jazyka a funkcí) http://www.oracle.com/technetwork/database/enterpriseedition/documentation (dokumentace k databázové platformě Oracle) http://www.penguin.cz/noviny/?id=chip/index (seriál Databáze standardu SQL z časopisu CHIP) Odkazy a další studijní prameny LACKO, L. Oracle, správa, programování a použití databázového systému. Praha: a: Computer Press, 2007. ISBN 80-251-1490-2. URMAN, S., HARDMAN, R., MCLAUGHLIN, M. Oracle - programování v PL/SQL.. Computer Press, 2008. ISBN 978-80-251-1870-2 8