background image

Procedury 

składowane 

background image

Przegląd zagadnień

Czym są procedury składowane
Praca z procedurami składowanymi
Zalety i wady procedur składowanych
Podsumowanie
Laboratorium

background image

Czym są procedury składowane 

Procedura składowana (ang. stored procedure) jest 

nazwanym zbiorem zapytań w języku SQL, który jest 

przechowywany na serwerze (w SZBD) i jest kompilowany 

przy pierwszym wykonaniu. 
Procedury wnoszą do środowiska serwera baz danych 

przetwarzanie warunkowe i możliwości programistyczne.
W SZBD wykonanie dowolnego fragmentu kodu języka SQL 

wiąże się z pewnym ciągiem procesów - począwszy od 

sprawdzenia składni aż do kompilacji i wykonania.

background image

Czym są procedury składowane 

Proces wykonania zapytania SQL
Wykonywanie procedur składowanych
Rekompilacja procedur składowanych

background image

Czym są procedury składowane 

Jak odbywa się wykonanie pojedynczego zapytania w języku Transact-SQL w MS SQL Server:

Kod musi zostać sprawdzony pod względem poprawności składni (kontrola poprawności 

semantycznej - czyli czy kod nie odwołuje się do nieistniejących obiektów lub używa 

nieistniejących poleceń oraz kontrola poprawności syntaktycznej - czy użyta składnia jest 

poprawna).
Następnie kod jest rozdzielany na fragmenty (często nazywane znacznikami) 

interpretowane przez ZSBD. Proces ten nazywamy parsowaniem (ang. parsing).
Następnie SZBD standaryzuje wyodrębnione części kodu, tzn. zapisuje je w jednoznacznej 

postaci (usuwając niepotrzebne znaczniki).
Kolejnym etapem jest optymalizacja - każde zapytanie może posiadać wiele 

przygotowanych tzw. planów wykonania (ang. execution plan). MS SQL Server posiada 

wewnętrzny proces (Query Optimizer), który wybiera optymalny sposób dostępu do danych 

- tzn. taki plan wykonania zapytania, w którym serwer będzie skanował (przeszukiwał) 

najmniejszą ilość stron danych. Na optymalizację szczególny wpływ mają struktura 

indeksów oraz sposób łączenia tabel.
Następuje kompilacja zapytania wg optymalnego planu wykonania i wykonanie 

skompilowanego zapytania.
Wyniki działania zapytania są zwracane do klienta.

background image

Wykonywanie procedur składowanych

Wykonywanie procedur składowanych odbywa się inaczej niż wykonywanie 

pojedynczych zapytań SQL. 

Schemat utworzenia i pierwszego wykonania procedury:

Programista bazy danych tworzy definicję procedury składowanej - tzn. 

wykonuje polecenie CREATE PROCEDURE.
Kod procedury jest sprawdzany pod względem syntaktyki.
Nazwa procedury i jej kod (tzw. ciało) są zapisywane do odpowiednich 

tabel systemowych bazy danych (sysobjects oraz syscomments).
Użytkownik wywołuje procedurę z odpowiednimi parametrami używając 

polecenia EXEC.
Dalej następuje właściwe wykonanie procedury - optymalizacja planu 

wykonania i kompilacja.
Skompilowany optymalny plan wykonania jest zapisywany w tzw. cache'u

procedur.

background image

Wykonywanie procedur składowanych

W MS SQL Server przy kontroli poprawności kodu procedury 

w trakcie jej tworzenia serwer nie sprawdza, czy istnieją 

obiekty (tabele, widoki), do których procedura się odwołuje. 
Sprawdzenie to następuje dopiero przy wykonaniu procedury 

(w przypadku odwołania do nieistniejącego obiektu 

procedura zgłosi błąd). 

background image

Wykonywanie procedur składowanych 

background image

Praca z procedurami składowanymi 

Tworzenie procedur składowanych
Wywoływanie procedur składowanych
Parametry procedur składowanych
Kolejność parametrów

background image

Tworzenie procedur składowanych

Do tworzenia procedur składowanych używamy polecenia 

języka SQL 

CREATE PROCEDURE (lub CREATE PROC).
W definicji procedury składowanej określamy: nazwę 

procedury; nazwy, typy danych oraz kierunek działania 

parametrów procedury; ciało procedury - czyli kod 

wykonywany przez procedurę; opcjonalnie deklarujemy, czy 

procedura ma być przy każdym wykonaniu rekompilowana.

background image

Parametry procedur składowanych

Procedury składowane mogą przyjmować parametry 

wywołania. Ilość i typ danych, które należy podać przy 

wywołaniu procedury składowanej określamy w trakcie 

tworzenia procedury (używając polecenia CREATE 

PROCEDURE). W zależności od tego, czy parametry będą 

potrzebne do wykonania procedury, czy też mają być one 

przez procedurę zwrócone, wyróżniamy dwa rodzaje 

parametrów: wejściowe (INPUT) oraz wyjściowe (OUTPUT).
Możliwe jest też zdefiniowanie w procedurze parametru 

przejściowego (będącego jednocześnie wejściowym i 

wyjściowym), czyli parametru, którego wartość podajemy 

przy wywołaniu procedury, a procedura podczas działania 

może zmienić wartość parametru i zwrócić nową wartość.

background image

Parametry procedur składowanych –

Kolejność parametrów

Użytkownik ma dwie możliwości wywoływania procedury 

składowanej z wieloma parametrami:

podać wartości parametrów w takiej kolejności, w jakiej 

parametry zostały zdeklarowane w definicji procedury 

składowanej,
przyporządkowywać wartości parametrom o konkretnych 

nazwach (kiedy nadajemy jawnie wartości parametrom, 

kolejność parametrów w wywołaniu jest dowolna).

background image

Praca z procedurami składowanymi 

Tworzenie procedur składowanych
Wywoływanie procedur składowanych
Parametry procedur składowanych
Kolejność parametrów

background image

Zalety procedur składowanych 

zwiększają wydajność bazy danych,
ograniczają ruch w sieci (przesyłane są tylko nazwy 

procedur wartości parametrów). 
zapewniają jedną logikę biznesową dla wszystkich 

aplikacji klienckich,
przesłaniają szczegóły tabel w bazie danych 

(przezroczystosc struktury dla zwykłego użytkownika 

aplikacji),
umożliwiają modyfikację danych bez bezpośredniego 

dostępu do tabel bazy danych,
dostarczają mechanizmów bezpieczeństwa (można 

nadawać uprawnienia do wykonywania procedur 

poszczególnym użytkownikom bazy danych). 

background image

Wady procedur składowanych

rekompilacja czasem jest następstwem zmniejszenia wydajności 

procedury (czyli administrator baz danych musi wiedzieć, kiedy 

przeprowadzić rekompilację),
w procedurach składowanych podobnie jak w perspektywach 

występuje problem zerwanego łańcucha własności (patrz moduł 8),
w przypadku zagnieżdżania procedur składowanych należy 

pamiętać o tym, że zmienia się kontekst wykonania (procedura 

zagnieżdżana wykonuje się z uprawnieniami innej procedury),
wreszcie, aby tworzyć dobre (tzn. poprawnie działające) procedury 

składowane niezbędne jest poznanie zaawansowanych 

mechanizmów języka SZBD (np. T-SQL) takich jak: operowanie 

zmiennymi, funkcje i procedury systemowe, obsługa błędów.

background image

Podsumowanie

Czym są procedury składowane
Praca z procedurami składowanymi
Zalety i wady procedur składowanych

background image

Laboratorium

Procedury systemowe 

Tworzenie procedur składowanych