T-SQL

Jak chytře na zápis volání sp_executesql?

sp_executesql známe a používáme všichni pro vykonání dynamicky generovaného T-SQL kódu. Viděl jsem již nejrůznější zápisy a jmenné konvence, které se zdály na první pohled nekomplikované a vyhovující, ale s narůstající složitostí kódu se více a více od ideálu vzdalovaly. V průběhu let praxe jsem si oblíbil zápis níže, který…

Read more
T-SQL

Používání CASE ve WHERE

Pokud vynecháme případné záludnosti, které nám může přinést použití příkazu CASE ve WHERE podmínce, je to někdy nadmíru šikovná pomůcka, která najde své využití především v různých uložených procedurách používaných jako datové zdroje pro Reporting Services reporty, případně jako chytrá pomůcka aplikaci pro získání filtrovaných datových setů pro gridy a…
T-SQL

Vzorová syntaxe CURSORu

Dvě základní šablony kurzoru. Liší se především syntakticky, kdy druhá varianta nevyžaduje opakované kopírování seznamu parametrů v příkazu FETCH, což je výhodné zejména tehdy, načítá-li kurzor velké množství sloupců z deklarativního dotazu.
T-SQL

Paralelní INSERT… SELECT

SQL Server 2016 přináší nově paralelní vykonání INSERT…SELECT kombinace, které za určitých okolností představuje výrazné (10x a více) zlepšení výkonu pro některé typické ETL scénáře. Aby mohl být použit paralelní operátor, musí být splněny především dvě podmínky: level kompatibily databáze musí být nastaven na 130 a je nutné použít TABLOCK…

Read more
T-SQL

Column Aliases are Fully Ignored in INSERT Columns List

Time to time crazy things are happening in SQL Server. T-SQL looks like to be easy and rigid language without any options for playing with it like other languages. I will show you that there is still some space where you can do magic and have some fun. Check out…
T-SQL

Sekvence

Sekvence přicházejí jako novinka s SQL Serverem 2012 a přinášejí konečně ANSI standard pro generování číselných sekvencí, který v SQL Serveru dosud chyběl a ani IDENTITY či jiná různá řešení na míru ho nemohla plně nahradit. Sekvence jsou samostatné objekty, které můžeme vytvářet na úrovni databázových schémat, a nejsou přiřazeny…
T-SQL

Modifying data using table valued functions

Is it possible to modify data in T-SQL using inline table valued functions? It´s surprising, but YES, it´s possible. If we will remember the sentence from BOL, that we can think about inline table valued functions as  they are like parameterized views, then it’s more clear that we can modify…
T-SQL

Odstranění času nebo datumu z DATETIME datového typu

Velmi často se stává, že při práci s DATETIME datovým typem nás nezajímá informace o čase, ale pouze datum. Před příchodem SQL 2008 neexistovaly samostatné datové typy pro ukládání pouze datum nebo pouze času (DATE, TIME) a pokud byl v datetime datovém typu uložen i čas, nezbývalo, než čas odstranit (respektive…
T-SQL

Spojování Common Table Expressions

Common Table Expressions (CTE), dočasné pojmenované sety, představují mocný nástroj pro řešení nejrůznějších situací. Kromě jejich nejběžnějšího použití v případě, kdy potřebujeme rekurzivně procházet množinu dat, patří k jejich další zajímavé silné vlastnosti možnost spojování více CTE za sebou. V článku si ukážeme, jaký je syntaktický zápis a praktickou aplikaci….

Read more