Procedura składowana to grupa instrukcji SQL skompilowanych w jedną. Procedury składowane mogą obejmować logikę biznesową i inne konstrukcje programistyczne.
W SQL Server procedura składowana to grupa składająca się z co najmniej jednej instrukcji Transact-SQL lub odwołanie do metody języka CLR (Common Runtime Language) Microsoft .NET Framework.
Programowalność
Procedura składowana to coś więcej niż tylko długi skrypt. Jest to skrypt, który został zapisany w SQL Server specjalnie w Procedury składowane węzeł i może:
- Zaakceptuj parametry wejściowe (i zwróć wiele wartości w postaci parametrów wyjściowych do programu wywołującego).
- Zawierają instrukcje programowania.
- Zwróć wartość statusu do programu wywołującego, aby wskazać sukces lub niepowodzenie oraz przyczynę każdego niepowodzenia.
Procedury składowane często zawierają logikę biznesową. Na przykład procedura składowana może akceptować parametry, które są do niej przekazywane, i testować te parametry za pomocą IF
sprawozdania. Np. jeśli parametr ma jedną wartość, zrób to, jeśli to inna wartość, zrób to.
Procedury składowane mogą poprawić wydajność aplikacji, ponieważ procedura składowana jest analizowana i optymalizowana zaraz po utworzeniu, a następnie przechowywana w pamięci. Uruchamianie zapytania warunkowego za pomocą procedury składowanej może być niezwykle szybkie — w porównaniu z aplikacją, która wysyła zapytanie przez sieć do serwera SQL, a następnie wszystkie dane są do niego zwracane przez sieć, dzięki czemu może je przefiltrować i wybrać tylko te rekordy, które go interesują.
Zalety procedur zapisanych
Oto niektóre z głównych zalet korzystania z procedur składowanych:
Korzyść | Wyjaśnienie |
---|---|
Programowanie modułowe | Możesz napisać procedurę składowaną raz, a następnie wywoływać ją wielokrotnie, z różnych części aplikacji (a nawet z wielu aplikacji). |
Wydajność | Procedury przechowywane zapewniają szybsze wykonywanie kodu i zmniejszają ruch w sieci.
|
Bezpieczeństwo | Użytkownicy mogą wykonywać procedurę składowaną bez konieczności bezpośredniego wykonywania jakichkolwiek instrukcji. Dlatego procedura składowana może zapewnić zaawansowaną funkcjonalność bazy danych użytkownikom, którzy normalnie nie mieliby dostępu do tych zadań, ale ta funkcjonalność jest udostępniana w ściśle kontrolowany sposób. |
Jak utworzyć procedurę składowaną
Aby utworzyć procedurę składowaną, użyj CREATE PROCEDURE
instrukcja, po której następuje kod, który tworzy procedurę składowaną. Jeśli twoja procedura składowana ma akceptować parametry, muszą one być dołączone po nazwie.
CREATE PROCEDURE myStoredProcedure AS ... OR CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS ...
Przykład
Oto przykład tworzenia procedury składowanej, a następnie jej wykonywania.
-
Utwórz zapisaną procedurę
Uruchom następującą instrukcję w bazie danych muzyki, którą utworzyliśmy w tym samouczku.
Ten przykład tworzy procedurę składowaną o nazwie AlbumsFromArtist. Wybiera wszystkie albumy od artysty określonego podczas uruchamiania procedury składowanej.
CREATE PROCEDURE spAlbumsFromArtist @ArtistName varchar(255) AS SELECT AlbumName, ReleaseDate FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId WHERE Artists.ArtistName = @ArtistName; GO
-
Wyświetl procedurę zapisaną
Rozwiń Programowalność> Procedury składowane węzła w odpowiedniej bazie danych, aby wyświetlić nowo utworzoną procedurę składowaną. Możesz także rozwinąć Parametry procedury składowanej węzła, aby zobaczyć parametry, które musisz przekazać po uruchomieniu.
-
Wykonaj procedurę zapisaną
Teraz, gdy procedura składowana została utworzona, możesz ją uruchomić za pomocą
EXECUTE
oświadczenie i przekazanie wymaganych parametrów.W naszym przykładzie musimy przekazać imię i nazwisko artysty.
EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";
Alternatywnie możesz pominąć nazwę parametru podczas przekazywania parametrów. Tak:
EXECUTE spAlbumsFromArtist "Devin Townsend";
Zmień procedurę składowaną
Możesz zmodyfikować swoją procedurę składowaną za pomocą ALTER PROCEDURE
oświadczenie. Podobnie jak w przypadku zmiany widoku, procedurę składowaną można zmienić, po prostu stosując nową definicję procedury składowanej.
-
Zmień procedurę składowaną
Uruchom następującą instrukcję. Spowoduje to dodanie nowej kolumny do wyników zwróconych przez procedurę składowaną. Dodajemy również aliasy do nazw kolumn.
ALTER PROCEDURE spAlbumsFromArtist @ArtistName varchar(255) AS SELECT al.AlbumName, al.ReleaseDate, g.Genre FROM Albums al INNER JOIN Artists ar ON al.ArtistId = ar.ArtistId INNER JOIN Genres g ON g.GenreId = al.GenreId WHERE ar.ArtistName = @ArtistName; GO
-
Wykonaj procedurę zapisaną
Teraz, gdy dodaliśmy
Genre
do widoku, procedura składowana zwraca teraz tę kolumnę, kiedy ją wykonujemy.EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";