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



Podobné dokumenty
Informační systémy 2008/2009. Radim Farana. Řešený příklad. Struktura navržené databáze

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

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

Informační systémy 2008/2009. Radim Farana. Obsah. Bezpečnost uložených procedur

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

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

Základní stavební prvky algoritmu

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

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

Dotazovací jazyk SQL I

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ů

Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

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

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

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

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

Aplikace počítačů v provozu vozidel 9

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

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Databázové systémy I

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

Jazyk S Q L základy, příkazy pro práci s daty

:20 1/13 Techniky T-SQL

Operace nad celými tabulkami

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

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 2 KONZISTENCE DATABÁZE

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

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

4IT218 Databáze. 4IT218 Databáze

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

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

Zámkový systém pro trez ory

Algoritmizace a programování

Zápisování dat do databáze

Kapitola 1: Co je Delphi 19. Překlad projektu 23

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

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

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

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

Windows 7 kompletní příručka. Bohdan Cafourek. Vydala Grada Publishing a.s. U Průhonu 22, Praha 7 jako svou publikaci

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

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

Uživatelská dokumentace

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

PG 9.5 novinky ve vývoji aplikací

Databázové systémy. Tomáš Skopal. * embedded SQL * externí aplikace. - Databázové aplikace

Tekla Structures Multi-user Mode

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

Podrobný postup pro vygenerování a zaslání Žádosti o podporu a příloh OPR přes Portál farmáře

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

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

Objektově orientované databáze

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Semestrální práce z DAS2 a WWW

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

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

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

účetních informací státu při přenosu účetního záznamu,

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

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

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

Zálohování a obnova Uživatelská příručka

Tlačítkový spínač s regulací svitu pro LED pásky TOL-02

VÝZVA K PODÁNÍ NABÍDKY VE VEŘEJNÉ ZAKÁZCE MALÉHO ROZSAHU

Integrovaný Ekonomický Systém Zakázkový list - IES WIN 2006

Příloha č. 3 VÝKONOVÉ UKAZATELE

Směrnice k rozpočtovému hospodaření

Nástroje na správu databáze

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace

Odpájecí stanice pro SMD. Kontrola teploty, digitální displej, antistatické provedení SP-HA800D

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

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

Obsah. Úvodem 11 Komu je kniha určena 12 Co v knize najdete 12

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

TECHNICKÁ DOKUMENTACE NA PC

MySQL manuál. Copyright: Adam Jun Stránky manuálu:

Otázky k teoretické části zkoušky z předmětu IAJCE 2006/2007

Výzva k podání nabídky

1. Požadavky na provoz aplikací IISPP

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

awk programovatelný filtr

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

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

Příloha č. 54. Specifikace hromadné aktualizace SMS-KLAS

Zálohování a zotavení Uživatelská příručka

Internetový portál Elektrotechnika 1. školení

NÁVRH A TVORBA HUDEBNÍ DATABÁZE

1 Seznámení s Word 2010, karty, nejčastější činnosti. 2 Tvorba dokumentu

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

Žáci mají k dispozici pracovní list. Formou kolektivní diskuze a výkladu si osvojí grafickou minimalizaci zápisu logické funkce

Pokyny k vyplnění Průběžné zprávy

NÁVOD K VYUŽÍVÁNÍ MICROSOFT IT ACADEMY E-LEARNING

Cvičení č. 6. Synchronizace ve Windows. 3 Body

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

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

Vytvoření nebo odstranění makra Excel

EMC2399. Programové vybavení pro řízení, sběr a zpracování dat pro EMC měření spektrálním analyzátorem Aeroflex řady 2399

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

ZADÁVACÍ DOKUMENTACE. Pořízení a provoz konsolidované IT infrastruktury

Transkript:

8 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah MS SQL Server 2005, Jazyk Transact-SQL, syntaxe, proměnné, struktury, funkce. Doporučená literatura: Andrew J. Brust, Stephen Forte. Mistrovství v programování SQL Serveru 2005. Brno: Computer Press, a.s., 2007. ISBN 978-80-251-1607-4. 2 Skripty a dávky Nastavení aktuální databáze. USE DatabaseName USE Prace Deklarace proměnných: DECLARE @name datatype DECLARE @prom DateTime 3 1

Skripty a dávky Přiřazení hodnoty do proměnné SET @name = value SET @prom = @p1 + 1 SELECT @prom SET @prom = (SELECT MAX(p_kusu) FROM prace) -- možný ale nedoporučovaný postup SELECT @prom SELECT @name = value SELECT @prom = MAX(p_kusu) FROM prace SELECT @prom 4 Systémové funkce Vestavěné funkce @@CURSOR_ROWS počet řádků aktuálního kurzoru @@CPU_BUSY - počet milisekund práce od posledního spuštění SQL Serveru @@DATEFIRST vrátí nastavený první den týdne 1 pondělí, 7 neděle, je možno nastavit SET DATEFIRST number @@DBTS vrátí aktuální časové razítko (unikátní v rámci databáze) @@ERROR číslo chyby po posledním příkazu T-SQL @@FETCH_STATUS indikuje výsledek posledního použití FETCH (0 OK, -1 konec, -2 záznam není) @@IDENTITY poslední hodnota identity vložená INSERT @@IDLE - počet milisekund nečinnosti od posledního spuštění SQL Serveru @@IO_BUSY - počet milisekund vstupních a výstupních operací od posledního spuštění SQL Serveru @@LANGID vrátí číslo aktuálního použitého jazyka @@LOCK_TIMEOUT - počet milisekund po které bude systém čekat na zablokovaný prostředek @@NESTLEVEL aktuální úroveň vnoření při provádění vnořených procedur @@OPTIONS informace o volbách nastavených příkazem SET @@PACK_RECEIVED počet vstupních paketů od posledního spuštění serveru @@REMSERVER vrací číslo serveru, který vyvolal vnořenou proceduru @@ROWCOUNT počet řádků dotčených posledním příkazem @@SERVERNAME jméno serveru @@SERVICENAME jméno služby SQL Serveru (MSSQLServer) @@TIMETICKS počet milisekund jednoho tiku (31,25) @@TOTAL_ERRORS počet chyb vstupu/výstupu od posledního spuštění @@TOTAL_READ - počet člení z disku od posledního spuštění @@TOTAL_WRITE - počet zápisů na disk od posledního spuštění @@TRANCOUNT počet aktivních transakcí v aktuálním spojení @@VERSION verze SQL serveru 5 Odeslání dávky Dávky se odesílají a zpracovávají odděleně. Každá dávka musí být plně autonomní. Rozpoznání konce dávky (SQL Analyzer) vždy na samostatném řádku. 6 2

Chyby v dávkách Syntaktické chyby zastavení běhu, neprovede se nic. Chyby běhu zastavení běhu, všechny provedené příkazy zůstávají v platnosti. 7 Využití dávek Oddělení operací, které musí proběhnout v určitém pořadí (zajištění referenční integrity apod.) Některé příkazy vyžadují samostatné dávky CREATE DEFAULT CREATE PROCEDURE CREATE RULE CREATE TRIGGER CREATE VIEW Pozor na správné nastavení implicitní databáze. 8 Příklad využití dávek CREATE DATABASE Test USE Test CREATE TABLE TestTable (col1 INT, col2 INT) Databáze musí být nejprve vytvořena, jinak do ní není možno nic vložit. 9 3

Generování programového kódu za běhu EXEC string definition EXECUTE string definition DECLARE @name VarChar(128) SET @name = 'MyTable' EXEC ('SELECT * FROM ' + @name) Příkaz pracuje v samostatném oboru platnosti. Proměnné použité v definičním řetězci v něm musí být deklarovány. 10 Uložené procedury Vytvoření uložené procedury CREATE PROCEDURE procname parname datatype VARYING = default OUTPUT [WITH RECOMPILE ENCRYPTION] [FOR REPLICATION] AS program code 11 Úprava uložené procedury Změna uložené procedury: ALTER PROC procname Očekává existenci procedury. Zachovává všechna existující oprávnění. Odstranění uložené procedury: DELETE PROC procname 12 4

Parametrizace procedury @name [AS] datatype [=default NULL] [VARYING] [OUTPUT] @name jméno proměnné, datatype datový typ, default výchozí hodnota (proměnná vždy NULL), není-li určena je parametr povinný, VARYING - výstupní parametr kurzoru, OUTPUT výstupní parametr. 13 Příklad vložení záznamu USE prace CREATE PROCEDURE VlozPraci @pracovnik INT, @typ VARCHAR(50), @kusu FLOAT, @datum DATETIME = NULL AS INSERT INTO prace (p_pracovnik, p_typ, p_kusu, p_datum) VALUES (@pracovnik, @typ, @kusu, @datum) 14 Použití procedury Parametry jsou předány USE prace pozičně, nepovinné parametry mohou být jen na konci seznamu EXEC VlozPraci 153, 'praní', 10, '04/10/2006 Vloží nový záznam se všemi údaji EXEC VlozPraci 153, 'praní', 10 Vloží nový záznam, datum bude NULL 15 5

Vrácení hodnoty parametru USE prace ALTER PROCEDURE VlozPraci @pracovnik INT, @typ VARCHAR(50), @kusu FLOAT, @datum DATETIME = NULL, @ID INT OUTPUT AS INSERT INTO prace (p_pracovnik, p_typ, p_kusu, p_datum) VALUES (@pracovnik, @typ, @kusu, @datum) SELECT @ID = @@identity 16 Vrácení hodnoty parametru USE prace DECLARE @MyID INT EXEC VlozPraci @typ='praní', @kusu=2, @datum='04/11/2006', @ID=@MyID OUTPUT PRINT @MyID @pracovnik=153, Parametry jsou předány odkazem, není nutno určit všechny hodnoty 17 Návratové hodnoty Je možno určit příkazem RETURN hodnota Ukončí okamžitě proceduru a vrátí hodnotu jejím názvem RETURN Ukončí proceduru a vrátí 0. Volání provedury DECLARE @MyRet INT EXEC @MyRet=VlozPraci 18 6

Příkazy pro řízení toku IF.. ELSE TO WHILE WAITFOR 19 IF.. ELSE Podmíněná činnost, resp. Rozhodování IF podmínka příkaz posloupnost ELSE příkaz posloupnost Pozor na testování existence hodnoty @prom = NULL -- chyba! @prom IS NULL -- správně 20 Kontrola hodnoty cizího klíče IF EXISTS (SELECT * FROM typyprace WHERE tp_nazev=@typ) INSERT INTO prace (p_pracovnik, p_typ, p_kusu, p_datum) VALUES (@pracovnik, @typ, @kusu, @datum) SELECT @ID = @@IDENTITY ELSE SELECT @ID = 0 Posloupnost příkazů Jeden příkaz 21 7

Kontrola hodnoty cizího klíče DECLARE @MyID INT EXEC VlozPraci @pracovnik=153, @typ='praní', @kusu=2, @datum='04/12/2006', @ID=@MyID OUTPUT PRINT @MyID DECLARE @MyID INT EXEC VlozPraci @pracovnik=153, @typ='žehlení', @kusu=2, @datum='04/12/2006', @ID=@MyID OUTPUT PRINT @MyID Vloženo Bez efektu 22 Kontrola hodnoty parametru IF @datum IS NULL DECLARE @actdate as datetime SET @actdate=getdate() SET @datum=cast(cast(datepart(m, @actdate) AS VARCHAR) + '/' + CAST(DATEPART(d, @actdate) AS VARCHAR)+ '/' + CAST(DATEPART(yy, @actdate) AS VARCHAR) AS DATETIME) CONVERT(datetime, CONVERT(varchar, getdate(), 112)) 112 ANSI formát, 101 US formát obojí plný letopočet DECLARE @MyID INT EXEC VlozPraci @pracovnik=153, @typ='praní', @kusu=12, Hodnotu nepovinného parametru @ID=@MyID OUTPUT nastaví procedura na dnešní datum PRINT @MyID 23 TO Přechod na určené návěští TO label label: příkaz IF @@ERROR!= 0 TO err_handler err_handler: 24 8

Ošetření chyby USE prace DECLARE @MyID INT, @MyRet INT EXEC @MyRet=VlozPraci @pracovnik=1530, @typ='praní', @kusu=12, @ID=@MyID OUTPUT PRINT @MyID PRINT @MyRet Server: Msg 547, Level 16, State 1, Procedure VlozPraci, Line 17 INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_prace_Pracovnici'. The conflict occurred in database 'prace', table 'Pracovnici', column 'pr_osc'. The statement has been terminated. -1 547 ALTER PROCEDURE VlozPraci @pracovnik INT, @typ VARCHAR(50), @kusu FLOAT, @datum DATETIME = NULL, @ID INT OUTPUT AS DECLARE @MyERR INT IF @datum IS NULL DECLARE @actdate as datetime SET @actdate=getdate() SET @datum=convert(datetime, CONVERT(varchar, getdate(), 112)) IF EXISTS (SELECT * FROM typyprace WHERE tp_nazev=@typ) INSERT INTO prace (p_pracovnik, p_typ, p_kusu, p_datum) VALUES (@pracovnik, @typ, @kusu, @datum) SELECT @MyERR = @@ERROR IF @MyERR!=0 TO err_handler SELECT @ID = @@IDENTITY ELSE SELECT @ID = 0 RETURN 0 err_handler: SELECT @ID = -1 RETURN @MyERR 25 Vynucení hlášení chyby Např. pro kontrolu správnosti její obsluhy. RAISERROR (ID zprávy text zprávy, významnost, stav, [argument] [WITH volba]) ID zprávy z tabulky (SELECT * FROM master..sysmessages), nové ID vygeneruje nový záznam v této tabulce. 26 WHILE Cyklus WHILE podmínka příkaz Nebo WHILE podmínka posloupnost příkazů [BREAK, CONTINUE] 27 9

Použití cyklů Obvykle ve spolupráci s kurzory BREAK násilné ukončení cyklu (skok za konec cyklu) CONTINUE restart cyklu (skok na začátek cyklu a vyhodnocení podmínky) 28 Použití cyklu DECLARE @nazev varchar(50), @popis varchar, @cena money DECLARE listtypyprace CURSOR FORWARD_ONLY FOR SELECT [tp_nazev], [tp_popis], [tp_cena] FROM [prace].[dbo].[typyprace] OPEN listtypyprace FETCH NEXT FROM listtypyprace INTO @nazev, @popis, @cena WHILE @@FETCH_STATUS = 0 PRINT @nazev FETCH NEXT FROM listtypyprace INTO @nazev, @popis, @cena CLOSE listtypyprace DEALLOCATE listtypyprace 29 WAITFOR Spuštění operace v určeném čase WAITFOR DELAY čas TIME čas DELAY doba čekání, maximálně 24 hod. TIME konkrétní časový okamžik dne 30 10