:20 1/13 Techniky T-SQL



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

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

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

TVORBA DATABÁZOVÝCH APLIKACÍ. Studijní opory

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

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

Databázové systémy I

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

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

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

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

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

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

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

Virtual private database. Antonín Steinhauser

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

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

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

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

Z. Kotala, P. Toman: Java ( Obsah )

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

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

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

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

Algoritmizace a programování

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

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

6 Příkazy řízení toku

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

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

Administrace Oracle. Práva a role, audit

Zápis programu v jazyce C#

Databázové systémy. Dotazovací jazyk SQL - III

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

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

6. Příkazy a řídící struktury v Javě

Zabezpečení proti SQL injection

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

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

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

PG 9.5 novinky ve vývoji aplikací

Programovací jazyk Pascal

Audit DB. Referát. Vypracoval: Zdeněk Doležal MFF UK Praha 11/5/06

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

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

Virtuální privátní databáze

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

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

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

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

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

Virtual Private Database (VPD) Jaroslav Kotrč

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

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

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

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

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

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

Funkce, podmíněný příkaz if-else, příkaz cyklu for

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.

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

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

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

Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík

Jazyk PL/SQL Úvod, blok

Vladimír

Dotazovací jazyk SQL a PL/SQL. 8. Přednáška

Struktura pamětí a procesů v DB Oracle. Radek Strnad

Zabezpečení proti SQL injection

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Použití databází na Webu

Embedded SQL. Tomáš Skalický. Říjen 2010

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Operační systémy. Cvičení 4: Programování v C pod Unixem

Mechanismus obarvení řádků browse

Databáze pro evidenci výrobků

Kapitola 4: SQL. Základní struktura

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

Databáze I. 5. přednáška. Helena Palovská

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

Algoritmus. Algoritmus je posloupnost kroků, které jsou potřeba k vyřešení problému.

Soubor jako posloupnost bytů

Databázové systémy I

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

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

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

Monitoring SQL Server, Resource Governor, Tracing SQL Server

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky


Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

ANOTACE vytvořených/inovovaných materiálů

řízení transakcí 2-3 hodiny

InterSystems Caché Post-Relational Database

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

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

VISUAL BASIC. Práce se soubory

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Transkript:

2016-04-09 05:20 1/13 Techniky T-SQL Techniky T-SQL Transact-SQL (T-SQL) je proprietární rozšíření pro SQL od společností Microsoft a Sybase. Microsoft tento jazyk pužívá ve svých produktech Microsoft SQL Server. T-SQL poskytuje širokou škálu funkcionality pro programáory nebo databázové administrátory. Transact SQL umožňuje řízení SQL dotazů, podmíněné zpracování konstrukcemi IF, ELSE, CASE, nebo WHILE, využití zabudovaných funkcí MSSQL serveru, nebo také sekvenční zpracování pomocí kurzorů. Velká síla T-SQL je v uložených procedurách díky nimž mohou programátoři definovat dávky SQL a znovuvyužívat kód, definovat triggery, nebo například řešit část aplikační logiky už na databázovém serveru. Administrátoři moho pomocí systémových uložených procedur administrovat server, sytémové procedury totiž umožňují pomocí T-SQL nastavovat velkou škálu parametrů SQL serveru, vytvářet databáze, zálohovat, nastavovat práva atd Podmíněné zpracování T-SQL umožňuje vracet hodnoty dotazu na základě dalšího zpracování a logického vyhodnocení výrazů. Můžeme vykonat blok příkazů pokud je splněna podmínka, nebo vykonat úplně jiný kód pokud podmínka splněna není. Na základě získaný hodnot můžeme tyto hodnoty dále zpacovávat nebo úplně měnit či transformovat. IF, ELSE Struktura IF, ELSE umožňuje vyhodnotit logický výraz a dle jeho výsledku vykonat dotaz. IF Boolean_expression { sql_statement statement_block } [ ELSE { sql_statement statement_block } ] DECLARE @Condition INT SET @Condition = 250 IF @Condition > 100 SELECT TOP 100 * FROM TABLE ELSE SELECT TOP @Condition * FROM TABLE

Last update: 2013-04-26 10:16 programming:mssql:t-sql https://wiki.borovicka.name/programming/mssql/t-sql CASE Funkce CASE umožňuje vracet hodnotu na základě vyhodnocení jednoho, nebo více výrazů. CASE input_expression WHEN when_expression THEN result_expression [...n ] [ ELSE else_result_expression ] Příklad SELECT firstname, surname, CASE gender WHEN 'male' THEN 'M' WHEN 'female' THEN 'F' ELSE 'UNKNOWN' age, birthdate FROM peoples Řízení toku T-SQL umožňuje zpracovávat bloky příkazů opakovaně, pohybovat se v nich, nebo je s nějakou podmínkou okamžitě opouštět. Pomocí cyklu WHILE můžeme vykonávat blok příkazů dokud není splněná námi definovaná podmínka, pomocí příkazu GOTO se můžeme dle uvážení pohybovat v bloku příkazů nebo bloky opouštet pomocí pžíkazu RETURN RETURN RETURN umožňuje okamžitě opustit aktuální dotaz, dávku, nebo proceduru a vrátit se do nadřazeného bloku s návratovou hodnotou. RETURN [ integer_expression ] SELECT firstname,surname FROM anytable IF (@@ROWCOUNT = ) RETURN UPDATE... https://wiki.borovicka.name/ Printed on 2016-04-09 05:20

2016-04-09 05:20 3/13 Techniky T-SQL... WHILE Umožňuje v cyklu vykonávat příkaz nebo dávku příkazů. WHILE Boolean_expression { sql_statement statement_block BREAK CONTINUE } DECLARE @nomrows INT WHILE(SELECT @numrows=count(*) FROM anytable WHERE columna>10) IF @numrows=1 BREAK UPDATE anytable SET columna=(columna+1) GOTO Umožňuje provádět skoky v dávkách SQL. GOTO label... UPDATE anytable SET columna=1 IF @@ROWCOUNT = GOTO endblock UPDATE anytable SET columnb=2...... endblock: RETURN

Last update: 2013-04-26 10:16 programming:mssql:t-sql https://wiki.borovicka.name/programming/mssql/t-sql Kurzory Kurzory umožňují sekvenčně zpracovávat řádky dotazu. Někdy je zapotřebí zpracovávat řádky jeden po druhém a ne celou sadu a právě k tomu kurzory slouží. Nicméně pokud to není nezbytně zapotřebí je lépe použít jiné konstrukce. Kurzory mohou totiž způsobit při svém běhu některé problémy, jedním z nich je velká paměťová náročnost, kurzory mohou způsobit i vyčerpání veškeré dostupné paměti, další problém nám může způsobit zamykání prostředků, ale asi největším jejich nedostatkem je rychlost, MSSQL server je založen na práci se sadami řádků a ne se sekvenčním zpracováním, proto je práce se sadami vždy rychlejší. Někdy však vaše aplikace použití kurzorů vyžaduje a vy jejich funkcionalitu velmi oceníte. Kurzor se definuje SQL dotazem, který vrací sadu řádků. Řádky se pak z něj dají brát postupně po jednom, nebo po blocích a to v obou směrech podle definice kurzoru. Když skončíte práci s kurzorem je nutné ho explicitně uzavřít a dealokovat, aby jste uvolnili veškeré prostředky, které kurzor alokoval. Pokud tak neučiníte kurzor zůstane v paměti a bude jí blokovat. Problém může také nastat pokud by jste alokovali dva stejně pojmenované kurzory (i když nejsou ve stejném bloku!), je lépe tomu předcházet a v každé proceduře pojmenovávat kurzor dle jeho funkce jiným názvem. Životní cyklus kurzoru 1. 2. 3. 4. 5. deklarace kurzoru otevření kurzoru práce s řádky uzavření kurzoru dealokace kurzoru Deklarace kurzoru už při deklaraci kurzoru definujeme jak s ním budeme pracovat a také se kterými daty, při jeho deklaraci určujeme SQL dotazem se kterými daty budem pracovat a dodatečným deklaracemi můžeme určit jestli budem kurzor otevírat pouze pro čtení, jestli se budem pohybovat pouze dopředu nebo i zpět, nebo třeba viditelnost kurzoru DECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR FOR select_statement [ FOR { READ ONLY UPDATE [ OF column_name [,...n ] ] } ] [;] Transact-SQL Extended Syntax DECLARE cursor_name CURSOR [ LOCAL GLOBAL ] [ FORWARD_ONLY SCROLL ] [ STATIC KEYSET DYNAMIC FAST_FORWARD ] [ READ_ONLY SCROLL_LOCKS OPTIMISTIC ] [ TYPE_WARNING ] FOR select_statement [ FOR UPDATE [ OF column_name [,...n ] ] ] [;] https://wiki.borovicka.name/ Printed on 2016-04-09 05:20

2016-04-09 05:20 5/13 Techniky T-SQL DECLARE cursorabc CURSOR FOR SELECT columna,columnb,columnc FROM anytable Otevření kurzoru příkazem OPEN kurzor naplníme OPEN { { [ GLOBAL ] cursor_name } cursor_variable_name } OPEN cursorabc Práce s řádky pracovat s řádky můžeme pomocí příkazu FETCH kterým načítáme do proměnných hodnoty z jednotlivých řádků, výsledek volání fetch je uložen v proměnné @@FETCH_STATUS (0 úspěch, -1 neúspěch, -2 chybějící řádek) FETCH [ [ NEXT PRIOR FIRST LAST ABSOLUTE { n @nvar } RELATIVE { n @nvar } ] FROM ] { { [ GLOBAL ] cursor_name } @cursor_variable_name } [ INTO @variable_name [,...n ] ] FETCH NEXT FROM cursorabc INTO @A,@B,@C Zavření a dealokace kurzoru příkazem CLOSE uvolníme paměť, kterou alokoval kurzor pro načtení rádků

Last update: 2013-04-26 10:16 programming:mssql:t-sql https://wiki.borovicka.name/programming/mssql/t-sql příkazem DEALOCATE uvolníme veškeré prostředky, které kurzor alokoval CLOSE { { [ GLOBAL ] cursor_name } cursor_variable_name } DEALLOCATE { { [ GLOBAL ] cursor_name } @cursor_variable_name } CLOSE cursorabc DEALLOCATE cursorabc Komplexní příklad: -- deklarace proměnných DECLARE @A INT DECLARE @B VARCHAR(10) DECLARE @C DECIMAL(10,2) -- deklarace kurzoru DECLARE cursorabc CURSOR FORWARD_ONLY FOR SELECT columna,columnb,columnc FROM anytable -- otevření kurzoru OPEN cursorabc -- načte řádek do kurzoru FETCH NEXT FROM cursorabc INTO @A,@B,@C -- cyklus pro zpracování všech řádek WHILE @@FETCH_STATUS = -- zde můžeme zpracovávat řádky print @A print @B print @C -- načte další řádek FETCH NEXT FROM cursorabc INTO @A,@B,@C -- uzavření kurzoru CLOSE cursorabc -- dealokace kurzoru DEALLOCATE cursorabc Uložené procedury Uložené procedura je seskupení příkazů T-SQL do jediného objektu uloženého na SQL serveru. Když se https://wiki.borovicka.name/ Printed on 2016-04-09 05:20

2016-04-09 05:20 7/13 Techniky T-SQL procedura vykonává poprvé po nastartovaní instance SQL serveru, uloží se do cache plán optimálního přístupu k datům, server pak tento plán využívá při každém dalším spuštění, čímž může urychlit vykonání dotazu. To je jedna a ne jediná z výhod uložených procedur. Další výhodou je znovupoužitelnost kódu, namísto aby jste všude kde je potřeba definovali jednoúčelový blok příkazů je lepší využít uloženou proceduru. Pokud by se tento kód měl vykonávat v nějaké z vašich aplikací jejich výhody se znásobí. Pokud by se třeba změnilo uložení dat v tabulkách, musíte vaši aplikaci popřípadě více aplikací na všech místech přepsat a v horším případě i překompilovat, ale pokud používáte uloženou proceduru, stačí ji změnit a pro aplikace se v podstatě nic nestalo. Použití procedur je také z pohledu db administrátora bezpečnější než přímý přístup do tabulek. Vytvoření uložené procedury CREATE { PROC PROCEDURE } [schema_name.] procedure_name [ ; NUMBER ] [ { @parameter [ type_schema_name. ] data_type } [ VARYING ] [ = DEFAULT ] [ OUT OUTPUT ] [READONLY] ] [,...n ] [ WITH <procedure_option> [,...n ] ] [ FOR REPLICATION ] AS { <sql_statement> [;][...n ] <method_specifier> } [;] <procedure_option> ::= [ ENCRYPTION ] [ RECOMPILE ] [ EXECUTE AS Clause ] <sql_statement> ::= { [ ] statements [ ] } <method_specifier> ::= EXTERNAL NAME assembly_name.class_name.method_name CREATE PROCEDURE [dbo].[myprocedure] @pid INT,@other INT,@sometext VARCHAR(100) AS IF ISNULL(@pid,)= RETURN EXEC ExecuteAnotherProcedure @pid IF ISNULL(@other,)<> DECLARE @a INT

Last update: 2013-04-26 10:16 programming:mssql:t-sql https://wiki.borovicka.name/programming/mssql/t-sql SELECT @a=a FROM anytable WHERE a=@pid AND b=@other UPDATE sometable SET a=@pid WHERE b=@other Úprava a odstranění uložené procedury -- úprava procedury ALTER { PROC PROCEDURE } [schema_name.] procedure_name [ ; NUMBER ]... same AS CREATE -- odstranění procedury DROP { PROC PROCEDURE } { [ schema_name. ] PROCEDURE } [,...n ] Zašifrování uložené procedury někdy je potřeba proceduru zabezpečit, aby nikdo nemohl neoprávněně získat její definici, zejména pokud řešíme část aplikační logiky uloženými procedurami. po zašifrování uložené procedury už si nelze prohlídnout její obsah! CREATE PROCEDURE [dbo].[myprocedure] WITH ENCRYPTION AS... Uživatelsky definované funkce uživatelsky definované funkce mají stejně jako uložené procedury mnoho výhod - ukládání do cache, znovupoužití kódu atd narozdíl od procedur však můžeme funkce použít i tam kde procedury ne (například v klauzuli SELECT) Typy uživatelsky definovaných funkcí Skalární uživatelsky definované funkce Přímé tabulkové uživatelsky definované funkce Vícepříkazové uživatelsky definované funkce Skalární uživatelsky definované funkce mohou přebírat nula nebo více argumentů vrací jedinou hodnotu https://wiki.borovicka.name/ Printed on 2016-04-09 05:20

2016-04-09 05:20 9/13 Techniky T-SQL CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type [ = DEFAULT ] [ READONLY ] } [,...n ] ] ) RETURNS return_data_type [ WITH <function_option> [,...n ] ] [ AS ] function_body RETURN scalar_expression [ ; ] CREATE FUNCTION dbo.udf_dayofweek(@dtdate DATETIME) RETURNS VARCHAR(10) AS DECLARE @rtdayofweek VARCHAR(10) SELECT @rtdayofweek = CASE DATEPART(weekday,@dtDate) WHEN 1 THEN 'Monday' WHEN 2 THEN 'Tuesday' WHEN 3 THEN 'Wednesday' WHEN 4 THEN 'Thursday' WHEN 5 THEN 'Friday' WHEN 6 THEN 'Saturday' WHEN 7 THEN 'Sunday' RETURN (@rtdayofweek) GO -- použití funkce SELECT udf_dayofweek(getdate()) Přímé tabulkové uživatelsky definované funkce mohou přebírat nula nebo více argumentů vrací data na základě jediného příkazu SELECT odkazuje se na ně z klauzule FROM

Last update: 2013-04-26 10:16 programming:mssql:t-sql https://wiki.borovicka.name/programming/mssql/t-sql CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type [ = DEFAULT ] [ READONLY ] } [,...n ] ] ) RETURNS TABLE [ WITH <function_option> [,...n ] ] [ AS ] RETURN [ ( ] select_stmt [ ) ] [ ; ] CREATE FUNCTION dbo.getbycity(@city VARCHAR(100)) RETURNS TABLE AS RETURN ( SELECT * FROM peoples WHERE city=@city ( GO -- použití funkce SELECT * FROM GetByCity('Prague') Vícepříkazové uživatelsky definované funkce narozdíl od přímých tabulkových funkcí, které jsou omezeny na jediný příkaz select, mohou vícepříkazové funkce vrátit výsledek definovaný pomocí více príkazů T-SQL CREATE FUNCTION [ schema_name. ] function_name ( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type [ = DEFAULT ] [READONLY] } [,...n ] ] ) RETURNS @return_variable TABLE <table_type_definition> [ WITH <function_option> [,...n ] ] [ AS ] function_body https://wiki.borovicka.name/ Printed on 2016-04-09 05:20

2016-04-09 05:20 11/13 Techniky T-SQL [ ; ] RETURN Odchytávání vyjímek pokud chceme v našich SQL příkazech nebo procedurách odchytávat vyjímka, dává nám k tomu T-SQL nástroj v podobě konstrukce TRY CATCH. Tato konstrukce je schopná zachytit vyjímky, které mohou nastat při vykonávání našeho kódu a vykonat nějakou reakci na vzniklou chybu. Například vygenerovat zprávu o chybě nebo anulovat transakci. Nastaneli v bloku TRY nějaká vyjímka, skončí SQL server v místě kde nastala a vykoná příkazy v bloku catch. Výhoda této konstrukce je, že se do sebe může libovolně vnořovat Konstrukce TRY nezachytí syntaktické chyby, nebo chybné názvy objektů Funkce poskytující informace o chybách ERROR_LINE - číslo řádky kde došlo k chybě ERROR_MESSAGE - chybová zpráva ERROR_NUMBER - číslo chyby ERROR_PROCEDURE - název procedury kde došlo k chybě ERROR_SEVERITY - závažnost chyby ERROR_STATE - stav chyby Konstrukce TRY...CATCH TRY { sql_statement statement_block } TRY CATCH [ { sql_statement statement_block } ] CATCH [ ; ] TRY INSERT anytable (columna,columnb,columnc) VALUES (1,2,3)

Last update: 2013-04-26 10:16 programming:mssql:t-sql https://wiki.borovicka.name/programming/mssql/t-sql TRY CATCH print 'Chyba při vykonávání příkazu!' CATCH Vytváření vlastních vyjímek někdy potřebujeme na chyby reagovat vlastními vyjímkami, i na to má T-SQL nástroj, vlastní vyjímku můžeme přidat pomocí systémové procedury sp_addmessage a vyjímku vyvolávat příkazem RAISERROR sp_addmessage [ @msgnum = ] msg_id, [ @severity = ] severity, [ @msgtext = ] 'msg' [, [ @lang = ] 'language' ] [, [ @with_log = ] { 'TRUE' 'FALSE' } ] [, [ @REPLACE = ] 'replace' ] -- úprava vlastní vyjímky sp_altermessage [ @message_id = ] message_number, [ @parameter = ] 'write_to_log', [ @parameter_value = ] 'value' -- odstraněni vyjímky sp_dropmessage [ @msgnum = ] message_number [, [ @lang = ] 'language' ] EXEC sp_addmessage 123456, 20, N'Došlo k mojí vyjímce!' Vyvolávání vlastních vyjímek vyvolat vlastní vyjímku můžeme pomocí RAISERROR RAISERROR ( { msg_id msg_str @local_variable } {,severity,state } [,argument [,...n ] ] ) [ WITH OPTION [,...n ] ] https://wiki.borovicka.name/ Printed on 2016-04-09 05:20

2016-04-09 05:20 13/13 Techniky T-SQL RAISERROR (123456, 20, 1, N'any.anytable' ) Zdroje Velká kniha T-SQL & SQL Server 2005, Joseph Sack, Zonerpress 2007 http://msdn.microsoft.com/en-us/library/ http://google.com From: https://wiki.borovicka.name/ - wiki.borovicka.name Permanent link: https://wiki.borovicka.name/programming/mssql/t-sql Last update: 2013-04-26 10:16