Blog JSystems - uwalniamy wiedzę!

Szukaj

Procedura składowana, w skrócie

Tworzenie i wywołanie:

CREATE PROCEDURE spKlienciZKraju @Kraj NVARCHAR(2) AS
BEGIN
  SELECT * FROM Klienci WHERE Kraj = @Kraj;
END;

EXEC spKlienciZKraju @Kraj = 'PL';

SQL Server umożliwia tworzenie modułów kodu T-SQL działających po stronie serwer za pomocą mechanimu procedur składowanych (SP – stored procedures). Procedury składowane są często wykorzystywane jakio warstwa pośrednia lub specjalna wartstwa API (application programming interface), działająca po stronie serwera i pośrednicząca pomiędzy aplikacją uzytkownika i tabelami w bazie danych. Procedury składowane zaprojektowane specjalnie do wykonywania zapytań i wyrażen z grupy DML na tabelach w bazwi danych często są nazywane procedurami CRUD

(create, read, update, delete).

Procedurę tworzy się poleceniem CREATE PROCEDURE (jako osobny BATCH).

W przypadku potrzeby zmiany jej kodu należy ją usunąć poleceniem DROP PROCEDURE i utworzyć od nowa, lub zmodyfikować poleceniem ALTER PROCEDURE.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa

Procedurę uruchamiamy poleceniem EXCUTE lub skrótem EXEC.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (2)

Teraz załóżmy że chcielibyśmy mieć jednak kontrolę nad tym o ile chcemy przyznać podwyżkę. Istniejąca procedura "DajPodwyzke" zostanie zmodyfikowana poprzez dołożenie jej parametru wejściowego.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (3)

Procedurę która posiada parametr wejściowy, należy uruchomić podając wartość tego parametru (zapis pozycyjny).

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (4)

Można zrobić to również w sposób jawny (zapis nazwany), podając nazwę parametru i przypisując mu daną wartość.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (5)

Zapis nazwany przydaje się np. W momencie kiedy dana procedura przyjmuję sporą ilość parametrów nie nie pamietamy którą wartość powinniśmy podać w jakiej kolejności.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (6)

W powyższym przykładzie powinno się podać najpierw wartość o jaką chcemy przyznać podwyżkę pracownikom, natomiast na drugiej pozycji powinniśmy podać numer działu w którym te osoby pracują.

Zakładając, że chcemy przyznać podwyżkę o 100 osobom, które pracują w dziale numer 90, uruchomienie procedury DajPodwyzkepowinno wyglądać następująco:

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (7)

Tę kolejność możemy jednak zamienić, jeśli skorzystamy ze sposobu nazwanego, podamy nazwy parametrów i wartości dla nich:

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (8)

Tworząc procedurę możemy w niej ustawić parametry domyślne, co oznacza że jeśli użytkownik nie przypisze im żadnej wartości, to procedura skorzysta z wartości domyślnej.

Poniżej przykład takiej procedury, gdzie jeśli użytkownik nie poda numeru działu w którym chce przyznać podwyżkę, to otrzymają ja osoby z działu nr 90.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (9)

Wywołanie takiej procedury, z podaniem tylko jednego parametru.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (10)

Parametry domyślne przy tworzeniu procedury powinny być podawane, jako parametry na ostatnich pozycjach. W przeciwnym wypadku, uruchomienie procedury będzie musiało nastepować za pomocą sposobu nazwanego.

W procedurach możemy również umieszczać parametry wyjściowe (OUTPUT), a więc procedura może nam zwrócić jakąś wartość poprzez taki parametr.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (11)

Przy wywołaniu takiej procedury, przy parametrze wyjściowym umieszczamy słowo OUT.

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (12)

Informacje o procedurach znajdziemy m.in. w słownikach SYSOBJECTS, SYS.PROCEDURES czy też INFORMATION_SCHEMA.ROUTINES (gdzie możemy nawet podejrzeć kod źródłowy danej procedury).

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (13)

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (14)

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (15)

Lub jeśli zależy nam jedynie na samym źródle procedury, rozpisanym w miarę czytelny sposób, to możemy posiłkować się procedurą składowaną SP_HELPTEXT:

Procedury składowane w SQL (T-SQL): ilustracja poglądowa (16)

Baner szkolenia Kompleksowe SQL w Microsoft SQL Server w JSystems, terminy gwarantowane

Szkolenie Kompleksowe SQL w Microsoft SQL Server →

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Czym jest procedura składowana w T-SQL?
To moduł kodu T-SQL działający po stronie serwera SQL Server. Procedury często pełnią rolę warstwy pośredniej lub API między aplikacją a tabelami, a te przeznaczone do operacji na danych bywają nazywane procedurami CRUD (tworzenie, odczyt, aktualizacja, usuwanie).
Jak stworzyć i uruchomić procedurę składowaną?
Procedurę tworzymy poleceniem CREATE PROCEDURE jako osobny batch, a uruchamiamy komendą EXECUTE lub skrótem EXEC. Jeśli procedura ma parametr wejściowy, przy wywołaniu podajemy jego wartość.
Jak zmienić kod istniejącej procedury?
Można ją zmodyfikować poleceniem ALTER PROCEDURE albo usunąć przez DROP PROCEDURE i utworzyć od nowa. Oba podejścia pozwalają zmienić logikę bez konieczności ręcznego zarządzania definicją w inny sposób.
Czym różni się przekazywanie parametrów pozycyjne od nazwanego?
Przy zapisie pozycyjnym podajemy wartości w kolejności, w jakiej zdefiniowano parametry. Przy zapisie nazwanym podajemy nazwę parametru i przypisaną wartość, dzięki czemu kolejność nie ma znaczenia. Nazwany zapis jest wygodny przy wielu parametrach.
Jak działają parametry domyślne w procedurze?
Parametr domyślny ma przypisaną wartość używaną, gdy użytkownik jej nie poda przy wywołaniu. Parametry domyślne powinny być umieszczane na ostatnich pozycjach, inaczej procedurę trzeba wywoływać zapisem nazwanym.
Gdzie znaleźć informacje o procedurach i ich kodzie?
Informacje znajdziemy w słownikach systemowych, takich jak SYS.PROCEDURES czy INFORMATION_SCHEMA.ROUTINES, gdzie widać nawet kod źródłowy. Sam kod procedury w czytelnej formie zwróci też procedura systemowa SP_HELPTEXT.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...