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



Podobné dokumenty
Operace nad celými tabulkami

Algoritmizace a programování

Algoritmizace a programování

Databázové a informační systémy

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

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

Maturitní témata z předmětu Programování a databázové systémy. pro šk. rok 2012/2013

Management projektů. Programová podpora auditu sytému managementu kvality HOT 4IT. Návrh

Aplikace počítačů v provozu vozidel 9

Modul informačního systému SPŠSE Liberec

4IT218 Databáze. 4IT218 Databáze

Jaké máte povinnosti vůči hasičům

Základní stavební prvky algoritmu

Modul Řízení objednávek.

Informační systém pro rezervaci pokojů hotelu SPORT

Obsah. Úvodem 9 Komu je kniha určena 9 Forma výkladu 9 Konkrétní postup výuky 10 Příklady ke knize 11

SCHÉMA PROCESU MTM ÚPRAV V SYSTÉMU INVESMARK FUTURA

29 Evidence smluv. Popis modulu. Záložka Evidence smluv

PODPORA ČINNOSTI NESTÁTNÍCH NEZISKOVÝCH ORGANIZACÍ PŮSOBÍCÍCH NA ÚZEMÍ MČ PRAHA 7 V OBLASTI SPORTU PRO ROK 2015

téma: Formuláře v MS Access

1 - Prostředí programu WORD 2007

Smlouvu o uskutečnění programu celoživotního vzdělávání (dále jen jako Smlouva ) I. Předmět Smlouvy

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů

Analýzy v GIS. Co se nachází na tomto místě? Kde se nachází toto? Kolik tam toho je? Co se změnilo od? Co je příčinou? Co když?

NAŘÍZENÍ STATUTÁRNÍHO MĚSTA LIBEREC č. 1/2013, kterým se vydává TRŽNÍ ŘÁD. Čl. 1. Předmět úpravy

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Praktické úlohy- zaměření specializace

Autodesk Inventor 8 vysunutí

Odbor dozoru a kontroly veřejné správy. Obecně závazné vyhlášky o veřejném pořádku

Vydání občanského průkazu

OBEC HORNÍ BOJANOVICE obecně závazná vyhláška č. 05/2005

DOMOVNÍ ŘÁD BYTOVÉHO DRUŽSTVA ZÁZVORKOVA 2007, 2008, 2009

VÝKLADOVÁ PRAVIDLA K RÁMCOVÉMU PROGRAMU PRO PODPORU TECHNOLOGICKÝCH CENTER A CENTER STRATEGICKÝCH SLUŽEB

1) vložení záznamu o smlouvě a jeho atributy (rozumí se i možnost opravy záznamu)

Programování 1. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Seriál: Management projektů 7. rámcového programu

O D B O R O V É S D R U Ž E N Í Ž E L E Z N I Č Á Ř Ů Republiková rada seniorů JEDNACÍ ŘÁD. 1. Úvodní ustanovení

Outlook manuál. BeeOnline. Rychlý kontakt:

Všeobecné pojistné podmínky pro pojištění záruky pro případ úpadku cestovní kanceláře

o užívání služby elektronického dodávání dokumentů a dalších služeb kooperačního systému e-pk uzavřená mezi

Kolejní řád. K o l e j n í ř á d. 1 Základní ustanovení

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

modul Jízdy a Kniha jízd uživatelská příručka

Sbírka úloh pro elektronickou stavebnici. Stručný popis programovacího jazyka Bascom AVR

Uživatelská dokumentace

Stručný návod na práci v modulu podatelna a výpravna

ORGANIZAČNÍ ŘÁD ŠKOLY

Projekt 438 Vytvoření studijních oborů Řešitel: prof. Ing. Václav Janda, CSc.

01. Identifikační kód. 02. Kód. 03. Pojmenování (název) životní situace. 04. Základní informace k životní situaci

Zabezpečení Uživatelská příručka

VI. Finanční gramotnost šablony klíčových aktivit

Co poskytuje Czech POINT

Stanovy společenství vlastníků

Evidence dat v prostředí MS Excelu Kontingenční tabulka a kontingenční graf

Vodafone promo kit uživatelský manuál Uživatelský manuál pro aplikaci. Vodafone promo kit. Verze dokumentu: 2.

Obsah 1. Grafický manuál firmy 2. Podklady grafického manuálu 3. Varianty loga 4. Logo a logotyp

Veřejnoprávní smlouva o poskytnutí investiční dotace č. 1/2016

DATABÁZE DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní:

průvodce správou, využitím a programováním

Návod pro administraci aplikace EdgeFrame HelpDesk

Obec Vlasatice. SMĚRNICE č. 1 / Pravidla pro poskytování dotací z rozpočtu obce Vlasatice

Preference v u ívání prost edk elektronické komunikace áky a studenty

ROZKLIKÁVACÍ ROZPOČET - ONLINE ZVEŘEJŇOVÁNÍ EKONOMICKÝCH DAT ÚŘADU

TIP: Pro vložení konce stránky můžete použít klávesovou zkratku CTRL + Enter.

Nařízení města Česká Lípa č. 4/2013, kterým se vydává tržní řád

Úplná pravidla spotřebitelské soutěže Jarní soutěž (dále jen Soutěž )

MČ Praha-Zličín, Tylovická 207, Praha Zličín

Příloha č.1 vysvětlení domácího řádu. Domácí řád Domova pro osoby se zdravotním postižením Smečno

Domov Pod Lipami Smečno, poskytovatel sociálních služeb. Pravidla. pro poskytování sociální služby Denní stacionář pro seniory

Konzistence databáze v nekonzistentním světě

I N V E S T I C E D O R O Z V O J E V Z D Ě L Á V Á N Í

Všeobecné obchodní podmínky pro užívání portálu (dále též jen Dražební řád )

Kategorizace zákazníků

1.11 Vliv intenzity záření na výkon fotovoltaických článků

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/

Všeobecné obchodní podmínky Simply Events s.r.o.

Server. Software serveru. Služby serveru

Všeobecné obchodní podmínky portálu iautodíly společnosti CZ-Eko s.r.o.

ZÁKLADNÍ POVINNOSTI DOPRAVCE I PRÁCI S DATY Z DIGITÁLNÍHO TACHOGRAFU

Záloha a obnovení Uživatelská příručka

Zabezpečení. Uživatelská příručka

se věc hodí k účelu, který pro její použití Prodávající uvádí nebo ke kterému se věc tohoto druhu obvykle používá,

PROGRAM OBNOVY VENKOVA VYSOČINY

Č E S K Á Š K O L N Í I N S P E K C E. Čj.: / Oblastní pracoviště č. 6 Ústí n. L. INSPEKČNÍ ZPRÁVA

Pomocník diabetika Uživatelská příručka

WEBDISPEČINK NA MOBILNÍCH ZAŘÍZENÍCH PŘÍRUČKA PRO WD MOBILE

Rozšířená nastavení. Kapitola 4

Jednotný vizuální styl: podpis v ové korespondenci.

Koncepce hospodaření s bytovým fondem Městské části Praha 5

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

Orientační průvodce mateřstvím a rodičovstvím v zadávacích dokumentacích poskytovatele

Magnetic Levitation Control

METODIKA DODRŽOVÁNÍ PRINCIPŮ ÚČELNOSTI, HOSPODÁRNOSTI A EFEKTIVNOSTI PŘI HOSPODAŘENÍ S VEŘEJNÝMI PROSTŘEDKY NÁVRH

ABB i-bus KNX Inteligentní elektroinstalace pro Váš perfektní dům

Katalog vzdělávání 2015

S M L O U V A O D Í L O. uzavřená podle ust a násl. zákona č. 89/2012 Sb., občanského zákoníku v platném znění II.

Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře. 1. kolo příjmu žádostí Programu rozvoje venkova ( )

Smluvní podmínky (KTv)

Obsah. Obsah. Úvod Makra v Excelu Nahrávání maker První setkání s editorem jazyka Visual Basic... 31

Manuál uživatele čipové karty s certifikátem

Transkript:

Uložené procedury Úvod Uložená procedura (rutina) je sada příkazů SQL, které jsou uložené na databázovém serveru a vykonává se tak, že je zavolána prostřednictvím dotazu názvem, který jim byl přiřazen (je to určitá obdoba funkce). Výhody Uložené procedury můžou podstatným způsobem ulehčit správu databázových aplikací. Pokud máme např. server, který ukládá a zpracovává data a pokud bude využívat uložených procedur, mohou se shodným způsobem vůči databázi chovat klienti pocházející z nejrůznějšího prostředí - desktopová aplikace napsaná v Javě, webový klient v PHP nebo třeba vzdálený server, který s tím "naším" komunikuje. Jestliže je potřeba uloženou proceduru upravit (nebo opravit), může se to udělat na jednom místě a tato změna je ihned použitelný pro všechny aplikace, které s databází komunikují. Dalším významným rysem uložených procedur je to, že přispívají k zabezpečení serveru. Procedury mohou být v databázových systémech nastaveny tak, že je smí spouštět pouze uživatel s oprávněním a procedury mohou samy kontrolovat počet, typ, velikost a některé jiné charakteristiky parametrů, jež jsou jim posílány. To je v praxi velmi významné, protože to umožňuje vyhnout se fenoménu SQL injection. Nejdůležitějším argumentem pro nasazení uložených procedur na server bývá to, že jsou obecně schopny běžet rychleji, než kdyby se příslušný kód vykonával příkaz po příkazu z klientské aplikace. Důvodem je fakt, že uložené procedury jsou na serveru zkompilovány. (zkompilováním je myšleno, že server si pro uloženou proceduru vytvoří a spravuje tzv. prováděcí plán, díky kterému je subsystém serveru zvaný optimalizátor obvykle schopen najít nejrychlejší způsob, jak uloženou proceduru provést, a potom tento způsob opakovaně používat při jednotlivých voláních této uložené procedury). Nevýhody Vyšší spotřeba prostředků kromě hlavního účelu databáze, kterým je ukládat data a udržovat relace mezi nimi, musí také vykonávat kód, který by jinak vykonala aplikace. Menší zdatnost - i přes bohatou výbavu jazykové konstrukce SQL, nenabízí takové možnosti jako plnohodnotný jazyk. Horší udržovatelnost rutin psaní kódu a ladění rutin je obtížnější, než psaní funkcí v PHP Obtížnější přenositelnost rutiny často používají syntaxi, která je specifická pro určitou danou databázi 1

Uložené procedury a MySQL MySQL umožňuje tvorbu uložených procedur od verze 5.0. Každá uložená procedura je v MySQL ukládána s konkrétní databází. Při odstranění databáze se smažou i definice uložených procedur. Uložené procedury podporují vykonávání SQL příkazů SELECT, INSERT, UPDATE a DELETE. Uložené procedury se obecně vytvářejí příkazem CREATE PROCEDURE proceduere_name [(seznam parametrů)] Když se vytváří uložené procedury z několika příkazů, musí se příkazy umístit do bloku BEGIN/END (příkazy jsou zakončeny středníkem). Př.1) V MySQL 5 vytvoříme následující tabulku: create table software (id int, nazev varchar(50)); s následující sadou dat: insert into software (id, nazev) values (1, 'Firefox'); insert into software (id, nazev) values (2, 'Mozilla'); insert into software (id, nazev) values (3, 'Chrome'); Uloženou proceduru, která vrátí všechny záznamy z této tabulky lze vytvořit pomocí kódu: create procedure VratSoftware() begin select * from software; end // V phpmyadmin je nutné zvolit jiný oddělovač než středník (;) dole v okně pro SQL dotazy (např. //) viz obrázek vpravo. a vytvořenou proceduru zavolat pomocí příkazu: call VratSoftware(); Uvedenou proceduru lze napsat i pomocí řádkového klienta, ikdyž tělo procedury obsahuje středník (odřádkování by v takovém případě způsobilo odeslání neúplné definice, příkaz by skončil chybou a procedura by nebyla vytvořena). V řádkovém klientovi lze změnit sekvenci znaků ukončujících příkaz za něco jiného než je středník. Lze to provést následujícím způsobem: delimiter // Obdobně by se příklad zapsal pomocí klienta mysql: mysql>delimiter // mysql>create procedure VratSoftware() >select * from software; >// mysql>delimiter ; mysql>call VratSoftware(); 2

Parametry uložených procedur Podobně jako funkce v programovacích jazycích, mohou i uložené procedury v MySQL přebírat vstupní parametry i vracet parametry zpět volajícímu.u každého parametru musí být deklarován název, datový typ, a zda se bude parametr používat pro předání informace dovnitř procedury, nebo pro předání informace z procedury zpět volajícímu, nebo zda bude zastávat obě činnosti. Pro deklaraci datových typů slouží stejné typy, které podporuje MySQL. Pro deklaraci účelu parametru se používá: IN pro předávání informací do procedury OUT pro předávání informací z procedury zpět volajícímu INOUT mohou předávat informace do procedury, jejich hodnota se může změnit a pak znovu používat vně procedury U všech parametrů deklarovaných jako OUT a INOUT se musí uvést jako prefix jejich názvu symbol @, když je volána uložená procedura, aby mohl být parametr znovu volán vně procedury. Ukázka možného zápisu procedury s parametry: create procedure vrat_data (IN produkt char(8), OUT pocet int) tělo příkazu proceduru lze poté zavolat: call vrat_obsah ( ABC12345, @pocet); a k parametru počet se poté dá přistoupit: select @pocet; Př.2) Pokud bychom chtěli vrátit jen jeden jediný řádek, který bude vybraný například podle identifikátoru, lze to provést např. takto: create procedure vratradek (radek int) begin select * from software where id = radek; end // zavoláním příkazu call vratradek(2); poté získáme druhý řádek tabulky software. 3

Deklarace a nastavování proměnných V uložených procedurách se často potřebují lokální proměnné. Na rozdíl od PHP se musí deklarovat před jejich prvním použití a specifikovat jejich typ. Proměnná se deklaruje pomocí příkazu DECLARE. Deklarace musí být uvnitř bloku BEGIN/END. Např.: DECLARE plat decimal(8,2); Hodnota proměnné se nastavuje příkazem SET. Např.: SET cislo = 155; Proměnné je také možno nastavit příkazem SELECT INTO. Např.: DECLARE prom INT; SELECT sloupec INTO prom FROM tabulka WHERE id= 10 ; Prosměná však bude mít lokální obor vzhledem k bloku BEGIN/END, ve kterém byla deklarována (v jedné rutině může být i více bloků BEGIN/END). Pokud je potřeba proměnnou používat i vně procedury, musela by se předat jako proměnná typu OUT. Př.3) create procedure vrathodnotu(out hodnota INT) begin select 45 INTO hodnota; end // CALL vrathodnotu(@hodnota); SELECT @hodnota; Procedura vrátí výsledek 45 a s hodnotou můžeme dále pracovat i vně procedury. Podmínky Mnohem širší uplatnění uložených procedur však souvisí s faktem, že mohou obsahovat určitou logiku - podmínky, cykly, lokální proměnné a tak dále. Syntaxe uložených procedur nabízí dvě konstrukce: IF-ELSEIF-ELSE a CASE. Příklad zápisu konstrukce IF-ELSEIF-ELSE: IF rok < 5 THEN set bonus = celkem * 1.05; ELSEIF rok >=5 AND rok < 10 THEN set bonus = celkem * 1.06; ELSEIF rok >=10 THEN set bonus = celkem * 1.07; END IF 4

Příklad zápisu konstrukce CASE: CASE WHEN stát= ČR THEN set tel = +420 ; WHEN stát= SR THEN set tel = +421 ; END CASE Cykly Syntaxe uložených procedur nabízí také konstrukci cyklů. Cyklus se může skládat z příkazů LOOP, ITERATE a LEAVE, nebo REPEAT, UNTIL a WHILE. Příklad zápisu: název_návěští: LOOP příkazy podmínky LEAVE název_návěští; ITERATE název_návěští; END LOOP název_návěští; // začátek cyklu // vyskočí z bloku cyklu // skočí na začátek cyklu // konec cyklu Cyklus REPEAT se velmi podobná konstrukci DO-WHILE z PHP (podmínka se vyhodnocuje na konci). Příklad zápisu: REPEAT příkazy UNTIL podmínka END REPEAT; // začátek cyklu // testování podmínky // konec cyklu Poslední možností je použití cyklu WHILE. Použití a zápis je obdobný jako v jiných programovacích jazycích. Příklad zápisu: WHILE podmínka DO příkazy END WHILE; // začátek cyklu a testování podmínky // konec cyklu Odstranění uložené procedury K odstranění uložené procedury slouží příkaz DROP. Zápis syntaxe: DROP PROCEDURE název_procedury; DROP PROCEDURE procedure IF EXISTS "název_procedury"; Prohlížení stavu procedury Někdy je potřeba zjistit, kdo konkrétní rutinu vytvořil, kdy byla vytvořena, kdy byla modifikována, nebo ke které databázi se vztahuje. K tomu slouží příkaz SHOW STATUS. Zápis syntaxe: SHOW PROCEDURE STATUS LIKE "název_procedury"; Prohlížení syntaxe procedury Pokud se potřebujeme podívat na zápis uložené procedury, můžeme použít příkaz SHOW CREATE. Zápis syntaxe: SHOW CREATE PROCEDURE název_databáze.název_procedury; 5

Příklad Vytvořte si jednoduchou uloženou proceduru, pomocí které budete vypisovat jméno a příjmení z tabulky president, seřazené podle příjemní. Poté vytvořte skript v PHP a tuto proceduru zavolejte. Příklad k vyzkoušení http://djlj.mujblog.info/mysql/ulozene-procedury-v-mysql Použité materiály: http://www.linuxsoft.cz/article.php?id_article=1003 http://www.linuxsoft.cz/article.php?id_article=1009 Velká kniha PHP a MySQL 5, W. Jason Gilmore 6