Skip to main content

Tworzenie zapisanych procedur dla twojego serwera SQL

Procedury, funkcje, wyzwalacze - programowanie w języku T-SQL - IT Szkoła (Czerwiec 2026)

Procedury, funkcje, wyzwalacze - programowanie w języku T-SQL - IT Szkoła (Czerwiec 2026)
Anonim

Microsoft SQL Server udostępnia mechanizm procedur składowanych w celu uproszczenia procesu tworzenia bazy danych poprzez grupowanie instrukcji Transact-SQL w łatwe do zarządzania bloki. Procedury przechowywane są doceniane przez większość programistów SQL Server, którzy uważają, że korzyści z bezpieczeństwa i wydajności, które zbierają, są warte inwestycji w czasie.

Korzyści z używania zapisanych procedur

Dlaczego programista powinien używać procedur przechowywanych?

Oto kluczowe zalety tej technologii:

  • Prekompilowane wykonanie: SQL Server kompiluje każdą przechowywaną procedurę raz, a następnie ponownie wykorzystuje plan wykonania. Powoduje to ogromne zwiększenie wydajności, gdy procedury przechowywane są wywoływane wielokrotnie.
  • Zredukowany ruch klient / serwer: Jeśli przepustowość sieci jest problemem w twoim środowisku, z przyjemnością dowiesz się, że procedury przechowywane mogą zredukować długie zapytania SQL do pojedynczej linii przesyłanej przewodowo.
  • Efektywne ponowne wykorzystanie kodu i abstrakcja programowania: Procedury przechowywane mogą być używane przez wielu użytkowników i programy klienckie. Jeśli wykorzystasz je w zaplanowany sposób, okaże się, że cykl rozwoju zajmuje mniej czasu.
  • Ulepszone mechanizmy bezpieczeństwa: Można udzielić użytkownikom uprawnień do wykonywania procedury składowanej niezależnie od podstawowych uprawnień tabel.

Procedury przechowywane są podobne do funkcji zdefiniowanych przez użytkownika, ale istnieją subtelne różnice.

Struktura

Procedury przechowywane są podobne do konstrukcji widocznych w innych językach programowania.

Przyjmują dane w postaci parametrów wejściowych określonych w czasie wykonywania. Te parametry wejściowe (jeśli zostały zaimplementowane) są wykorzystywane w wykonywaniu szeregu instrukcji, które dają pewien wynik. Wynik ten jest zwracany do środowiska wywołującego za pomocą zestawu rekordów, parametrów wyjściowych i kodu powrotu.

To może brzmieć jak kęs, ale przekonasz się, że procedury przechowywane są naprawdę proste.

Przykład

Rzućmy okiem na praktyczny przykład związany z tabelą o nazwie inwentarza pokazaną na dole tej strony. Informacje te są aktualizowane w czasie rzeczywistym, a kierownicy magazynu stale sprawdzają poziomy produktów przechowywanych w ich magazynie i są dostępne do wysyłki. W przeszłości każdy menedżer uruchamiał zapytania podobne do następujących:

WYBIERZ produkt, ilośćZ zapasówWHERE Warehouse = "FL"

Spowodowało to nieefektywną wydajność na serwerze SQL. Za każdym razem, gdy menedżer magazynu wykonał zapytanie, serwer bazy danych został zmuszony do przekompilowania zapytania i wykonania go od początku. Wymagało to również od managera magazynu znajomości języka SQL i odpowiednich uprawnień dostępu do informacji o tablicy.Zamiast tego proces można uprościć za pomocą procedury przechowywanej. Oto kod procedury o nazwie sp_GetInventory, która pobiera poziomy zapasów dla danego magazynu.

CREATE PROCEDURE sp_GetInventory@location varchar (10)TAK JAKWYBIERZ produkt, ilośćZ zapasówWHERE Warehouse = @ lokacja

Kierownik magazynu w Florydzie może następnie uzyskać dostęp do poziomu zapasów, wydając polecenie:

WYKONAJ sp_GetInventory "FL"

Nowojorski menedżer magazynu może użyć tej samej przechowywanej procedury, aby uzyskać dostęp do inwentarza tego obszaru:

WYKONAJ sp_GetInventory "NY"

To prawda, że ​​jest to prosty przykład, ale korzyści z abstrakcji można zobaczyć tutaj. Kierownik magazynu nie musi rozumieć języka SQL ani wewnętrznych procedur procedury. Z perspektywy wydajności procedura przechowywana działa cuda. SQL Server tworzy plan wykonania raz, a następnie ponownie go wykorzystuje, podłączając odpowiednie parametry w czasie wykonywania.Teraz, gdy nauczyłeś się korzyści z procedur przechowywanych, wyjdź na miejsce i skorzystaj z nich.

Wypróbuj kilka przykładów i zmień osiągnięte ulepszenia wydajności - będziesz zaskoczony!

Tabela zasobów

IDProduktMagazynIlość
142Zielone fasolkiNY100
214GrochFL200
825kukurydzaNY140
512fasola limeńskaNY180
491PomidoryFL80
379ArbuzFL85