Category SQL Server

[T-SQL] gdzie jest schemat typów tabel

Mamy tabelę:

typy1

W jaki sposób wyświetlić podobny rezultat przy pomocy SQL? Dane z opisem tabel przechowywane są w trzech tabelach: SYS.TABLES, SYS.COLUMNS, SYS.TYPES. Funkcja która wykorzystuje te tabele:

Read More

SQL Injection, dynamiczne kolumny

Możemy sobie wyobrazić sytuację gdzie do procedury jest dostarczana dynamiczna liczba lista kolumn:

sqlinjeciton

Lista kolumn może mieć różną formę np: *, [kolumna], kolumna, kolumna as kol itd. Bardzo łatwo coś do takiej listy wstrzepić. Więc poproszono mnie o załatanie takich smaczków. Napisałem poniższą funkcję, której celem jest zwrócenie „bezpiecznej listy kolumn”:

Read More

EOMONTH nowa funkcja SQL Server 2012

Do SQL Server 2012 dodano kilka funkcji związanych z operacjami na datach. Jedną z bardziej pożytecznych jest EOMONTH, której pierwszym obowiązkowym elementem jest data, a kolejnym opcjonalnym przesunięcie w miesiącach. Rezultat to zwrócenie ostatniego dnia w miesiącu. Dotychczas operację tę można było wykonać na wiele sposób. Jednak były one raczej nieczytelne na pierwszy rzut oka np.:

1newEndMonth2012

Poniższy przykład przedstawia możliwość funkcji EOMONTH:

2EndMonth2012

Jak widać prosto i czytelnie.

Share
Read More

Stronicowanie w SQL Server 2012

Kolejną nowością dodaną do SQL Server 2012 jest wbudowane stronicowanie danych. Mechanizm ten przydaje się gdy pracujemy z dużą ilością danych i chcemy wyświetlić tylko określoną stronę danych.

Do stronicowania służą słowa kluczowe OFFSET i FETCH NEXT. Dzięki nim możemy określić zakres danych. Przykładowe użycie:

Działanie tego zapytania nie wymaga raczej tłumaczenia. A jeżeli tak, to wątpliwości powinna rozjaśnić poniższa grafika.

pagingSQL

W SQL Server 2008 podobną funkcjonalność można było uzyskać...

Read More

Sequence nowa funkcja SQL Server 2012

Jedną z nowych funkcji SQL Server 2012 są sekwencje (Sequence). Sekwencje służą do generowania kolejnych numerów. Dla pojedynczych tabeli podobną funkcjonalność można uzyskać poprzez ustawienie właściwości identity danego pola. Jednak w niektórych rozwiązaniach taki obiekt może się okazać przydatny. Przed SQL Server 2012 sekwencje można było emulować np. przez stworzenie tabeli z polem numerycznym a następnie jego inkrementowanie.

Stworzenie sekwencji jest bardzo proste. Możliwe jest zdefiniowanie, startowego i końcowego numeru, następnego kroku, typu danych, schematu i wielu innych właściwości. Poniższy skrypt tworzy prostą sekwencje:

Read More