Mamy tabelę:
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:
Mamy tabelę:
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:
Możemy sobie wyobrazić sytuację gdzie do procedury jest dostarczana dynamiczna liczba lista kolumn:
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”:
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.:
Poniższy przykład przedstawia możliwość funkcji EOMONTH:
Jak widać prosto i czytelnie.
Read MoreKolejną 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:
1 2 3 4 5 |
SELECT * FROM [dbo].[Apartments] ORDER BY Id OFFSET 1 ROWS FETCH NEXT 2 ROWS ONLY; |
Działanie tego zapytania nie wymaga raczej tłumaczenia. A jeżeli tak, to wątpliwości powinna rozjaśnić poniższa grafika.
W SQL Server 2008 podobną funkcjonalność można było uzyskać...
Read MoreJedną 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:
Najnowsze komentarze