Съхранената процедура е група от SQL изрази, компилирани в един. Съхранените процедури могат да включват бизнес логика и други програмни конструкции.
В SQL Server съхранената процедура е група от един или повече Transact-SQL изрази или препратка към метод за общ език за изпълнение на Microsoft .NET Framework (CLR).
Програмируемост
Съхранената процедура е нещо повече от дълъг скрипт. Това е скрипт, който е записан в SQL Server специално под Съхранените процедури възел и може:
- Приемане на входни параметри (и връщане на множество стойности под формата на изходни параметри към извикващата програма).
- Съдържа изрази за програмиране.
- Върнете стойност на състоянието на извикващата програма, за да посочите успех или неуспех, както и причината за всеки неуспех.
Съхранените процедури често съдържат бизнес логика. Например, съхранената процедура може да приеме параметри, които са й предадени, и да тества спрямо тези параметри с помощта на IF
изявления. Например, ако параметърът е една стойност, направете това, ако е друга стойност, направете това.
Съхранените процедури могат да подобрят производителността в приложение, тъй като съхранената процедура се анализира и оптимизира веднага след създаването й и след това се съхранява в паметта. Изпълнението на условна заявка чрез съхранена процедура може да бъде изключително бързо - в сравнение с приложение, което изпраща заявка в мрежата, до SQL Server, след което всички данни се връщат към него в мрежата, за да може да филтрира през нея и да избира само записите, от които се интересува.
Предимства на съхранените процедури
Ето някои от основните предимства при използването на съхранени процедури:
Полза | Обяснение |
---|---|
Модулно програмиране | Можете да напишете съхранена процедура веднъж, след което да я извикате отново и отново, от различни части на приложение (и дори от множество приложения). |
Ефективност | Съхранените процедури осигуряват по-бързо изпълнение на кода и намаляват мрежовия трафик.
|
Сигурност | Потребителите могат да изпълняват съхранена процедура, без да е необходимо директно да изпълняват който и да е от операторите. Следователно съхранената процедура може да осигури разширена функционалност на базата данни за потребители, които обикновено не биха имали достъп до тези задачи, но тази функционалност се предоставя по строго контролиран начин. |
Как да създадете съхранена процедура
За да създадете съхранена процедура, използвайте CREATE PROCEDURE
оператор, последван от кода, който съставя съхранената процедура. Ако вашата съхранена процедура ще приема параметри, те трябва да бъдат включени след името.
CREATE PROCEDURE myStoredProcedure AS ... OR CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS ...
Пример
Ето пример за създаване на съхранена процедура и след това изпълнение на тази съхранена процедура.
-
Създайте съхранената процедура
Изпълнете следното изявление срещу базата данни за музика, която създадохме в този урок.
Този пример създава съхранена процедура, наречена AlbumsFromArtist. Той избира всички албуми от изпълнител, който е посочен, когато се изпълнява съхранената процедура.
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
-
Преглед на съхранената процедура
Разгънете Програмируемост> Съхранени процедури възел под приложимата база данни, за да видите вашата новосъздадена съхранена процедура. Можете също да разширите Параметри на съхранената процедура възел, за да видите параметрите, които трябва да предадете, когато го стартирате.
-
Изпълнете съхранената процедура
След като съхранената процедура е създадена, можете да я стартирате с помощта на
EXECUTE
изявление и подаване на всички необходими параметри.В нашия пример трябва да предадем името на художника.
EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";
Като алтернатива можете да пропуснете името на параметъра, когато предавате параметри. Като това:
EXECUTE spAlbumsFromArtist "Devin Townsend";
Промяна на съхранена процедура
Можете да промените вашата съхранена процедура с ALTER PROCEDURE
изявление. Точно както когато променяте изглед, можете да промените съхранена процедура, като просто приложите новата дефиниция на съхранената процедура.
-
Променете съхранената процедура
Изпълнете следното изявление. Това добавя нова колона към резултатите, върнати от съхранената процедура. Ние също така добавяме псевдоними към имената на колоните.
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
-
Изпълнете съхранената процедура
Сега, когато добавихме
Genre
колона към изгледа, съхранената процедура вече връща тази колона, когато я изпълним.EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";