Blog JSystems - z miłości do programowania

Szukaj

Procedury składowane w T-SQL

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.



Procedurę uruchamiamy poleceniem EXCUTE lub skrótem EXEC.



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.



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



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



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.



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:



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



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.



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



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.



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



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).





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:


Przyjdź do nas na szkolenie z baz danych SQL Server! Mamy szereg szkoleń w ofercie: SQL, T-SQL, tuning, administracja i wiele innych. Sprawdź dostępne szkolenia SQL Server
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu! Zapisz się do newslettera