RSS

Moje notatki – SQL Server 2008 R2 – część 2 – Procedury

07 Czer

Procedury składowane działają szybciej niż taki sam skrypt. Dzieje się to z kilku prostych przyczyn. Ponieważ SQL Server przy każdym uruchamianiu skryptu musi poczynić kilka ważnych kroków takich jak:
* sprawdzenie poprawności wpisanego skryptu
* sprawdzenie statystyk
* wykonanie planu zapytania
Jeśli wykonywana jest skrypt SQL wszystkie te operacje robione są podczas jego uruchomienia. Procedura składowana jest z definicji sprawdzana przez kompilator podczas jej tworzenia, a plan zapytania jest tworzony automatycznie przy jej pierwszym uruchomieniu. Tak więc przy dodatkowym atutem procedur jest szybkość ich działania.

Specyfikacja ważniejszych typów danych:
TINYINT – liczba jednobajtowa. Wartości od -128 do 127.
UNSIGNED TINYINT – liczba jednobajtowa bez znaku. Wartości od 0 do 255. Słowo ”UNSIGNED” przed nazwami kolejnych typów liczbowych robi to samo, co w tym przypadku.
SMALLINT – liczba dwubajtowa. Wartości od -32768 do 32767, a bez znaku od 0 do 65535.
MEDIUMINT – liczba trzybajtowa. Wartości od -8388608 do 8388607, a bez znaku od 0 do 16777215.
INT – liczba czterobajtowa. Wartości od -2147483648 do 2147483647, a bez znaku od 0 do 4294967294.
BIGINT – liczba ośmiobajtowa. Wartości od -9223372036854775808 do 9223372036854775807, a bez znaku od 0 do 18446744073709551615.
FLOAT – liczba zmiennoprzecinkowa czterobajtowa (tak, jak w PHP).
VARCHAR(M) – tekst o długości N od 0 do M znaków, gdzie M < 256. W pamięci zajmuje N + 1 bajtów (dodatkowy zawiera długość tekstu).
CHAR(M) – tekst o długości od 0 do M znaków, gdzie M < 256. W przeciwieństwie do poprzedniego typu, zajmuje w pamięci zawsze M bajtów nawet, jeżeli znajdujący się w nim tekst jest krótszy.
TEXT – typ tekstowy doskonały do przechowywania dłuższych treści. Można w nim zmieścić aż 64 kB danych (65535 znaków).
BLOB – typ do przechowywania danych binarnych, np. plików. Maksymalna wielkość to także 64 kB.
BOOL – typ logiczny, równoważnik zapisu ”TINYINT(1)”.
DATE – wyspecjalizowany typ do przechowywania daty. Bardzo rzadko wykorzystywany w poważniejszych aplikacjach PHP ze względu na jego niewygodne przetwarzanie i formatowanie

1. Tworzenie procedury :
CREATE PROCEDURE proc03
@OSOBA NVARCHAR(32)
AS
SELECT * FROM OSOBOADRESY
WHERE OSOBA = @OSOBA

2. Wywoływanie procedury :
EXEC PROC03

3. Zmiana procedury :
ALTER PROCEDURE proc03
@OSOBA NVARCHAR(32)
AS
SELECT * FROM OSOBOADRESY
WHERE OSOBA >= @OSOBA

4. Procedura z funkcją if
CREATE PROCEDURE KALKULATOR
@LICZBA1 INT,
@LICZBA2 INT,
@ZNAK VARCHAR(1)
AS
IF @ZNAK = '+' SELECT @LICZBA1+@LICZBA2 AS 'WYNIK'
IF @ZNAK = '-' SELECT @LICZBA1-@LICZBA2 AS 'WYNIK'
IF @ZNAK = '*' SELECT @LICZBA1*@LICZBA2 AS 'WYNIK'
IF @ZNAK = '/' SELECT @LICZBA1/@LICZBA2 AS 'WYNIK'
ELSE SELECT 'ZŁY ZNAK'

Wywołanie tej procedury :
EXEC KALKULATOR 1,2,'+'

CDN;]

Baza AdventureWorks 2008R2 SR1 do nauki :
http://msftdbprodsamples.codeplex.com/releases/view/55926
GDY PIERWSZE NIE ZADZIAŁA
http://msftdbprodsamples.codeplex.com/releases/view/59211

Advertisements
 
Dodaj komentarz

Opublikował/a w dniu Czerwiec 7, 2011 w SQL

 

Tagi:

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s