Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте съхранена процедура в SQL Server 2017

Съхранената процедура е група от SQL изрази, компилирани в един. Съхранените процедури могат да включват бизнес логика и други програмни конструкции.

В SQL Server съхранената процедура е група от един или повече Transact-SQL изрази или препратка към метод за общ език за изпълнение на Microsoft .NET Framework (CLR).

Програмируемост

Съхранената процедура е нещо повече от дълъг скрипт. Това е скрипт, който е записан в SQL Server специално под Съхранените процедури възел и може:

  • Приемане на входни параметри (и връщане на множество стойности под формата на изходни параметри към извикващата програма).
  • Съдържа изрази за програмиране.
  • Върнете стойност на състоянието на извикващата програма, за да посочите успех или неуспех, както и причината за всеки неуспех.

Съхранените процедури често съдържат бизнес логика. Например, съхранената процедура може да приеме параметри, които са й предадени, и да тества спрямо тези параметри с помощта на IF изявления. Например, ако параметърът е една стойност, направете това, ако е друга стойност, направете това.

Съхранените процедури могат да подобрят производителността в приложение, тъй като съхранената процедура се анализира и оптимизира веднага след създаването й и след това се съхранява в паметта. Изпълнението на условна заявка чрез съхранена процедура може да бъде изключително бързо - в сравнение с приложение, което изпраща заявка в мрежата, до SQL Server, след което всички данни се връщат към него в мрежата, за да може да филтрира през нея и да избира само записите, от които се интересува.

Предимства на съхранените процедури

Ето някои от основните предимства при използването на съхранени процедури:

Полза Обяснение
Модулно програмиране Можете да напишете съхранена процедура веднъж, след което да я извикате отново и отново, от различни части на приложение (и дори от множество приложения).
Ефективност Съхранените процедури осигуряват по-бързо изпълнение на кода и намаляват мрежовия трафик.
  • По-бързо изпълнение:Съхранените процедури се анализират и оптимизират веднага след като бъдат създадени и съхранената процедура се съхранява в паметта. Това означава, че ще се изпълни много по-бързо от изпращането на много редове SQL код от вашето приложение към SQL Server. Това изисква SQL Server да компилира и оптимизира вашия SQL код всеки път, когато се изпълнява.
  • Намален мрежов трафик:Ако изпратите много редове SQL код по мрежата до вашия SQL Server, това ще повлияе на производителността на мрежата. Това е особено вярно, ако имате стотици редове SQL код и/или имате много активност във вашето приложение. Изпълнението на кода на SQL Server (като съхранена процедура) елиминира необходимостта от изпращане на този код по мрежата. Единственият мрежов трафик ще бъдат предоставените параметри и резултатите от всяка заявка.
Сигурност Потребителите могат да изпълняват съхранена процедура, без да е необходимо директно да изпълняват който и да е от операторите. Следователно съхранената процедура може да осигури разширена функционалност на базата данни за потребители, които обикновено не биха имали достъп до тези задачи, но тази функционалност се предоставя по строго контролиран начин.

Как да създадете съхранена процедура

За да създадете съхранена процедура, използвайте CREATE PROCEDURE оператор, последван от кода, който съставя съхранената процедура. Ако вашата съхранена процедура ще приема параметри, те трябва да бъдат включени след името.

CREATE PROCEDURE myStoredProcedure AS
...

OR

CREATE PROCEDURE myStoredProcedure @ParameterName DataType AS
...

Пример

Ето пример за създаване на съхранена процедура и след това изпълнение на тази съхранена процедура.

  1. Създайте съхранената процедура

    Изпълнете следното изявление срещу базата данни за музика, която създадохме в този урок.

    Този пример създава съхранена процедура, наречена 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
  2. Преглед на съхранената процедура

    Разгънете Програмируемост> Съхранени процедури възел под приложимата база данни, за да видите вашата новосъздадена съхранена процедура. Можете също да разширите Параметри на съхранената процедура възел, за да видите параметрите, които трябва да предадете, когато го стартирате.

  3. Изпълнете съхранената процедура

    След като съхранената процедура е създадена, можете да я стартирате с помощта на EXECUTE изявление и подаване на всички необходими параметри.

    В нашия пример трябва да предадем името на художника.

    EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";

    Като алтернатива можете да пропуснете името на параметъра, когато предавате параметри. Като това:

    EXECUTE spAlbumsFromArtist "Devin Townsend";

Промяна на съхранена процедура

Можете да промените вашата съхранена процедура с ALTER PROCEDURE изявление. Точно както когато променяте изглед, можете да промените съхранена процедура, като просто приложите новата дефиниция на съхранената процедура.

  1. Променете съхранената процедура

    Изпълнете следното изявление. Това добавя нова колона към резултатите, върнати от съхранената процедура. Ние също така добавяме псевдоними към имената на колоните.

    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
  2. Изпълнете съхранената процедура

    Сега, когато добавихме Genre колона към изгледа, съхранената процедура вече връща тази колона, когато я изпълним.

    EXECUTE spAlbumsFromArtist @ArtistName = "Devin Townsend";

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-простият начин да направите рекурсивно самоприсъединяване?

  2. Как да определите стойността на полето, която не може да се преобразува в (десетична, float,int) в SQL Server

  3. Как да използвате RANK() в SQL Server

  4. Какъв тип данни трябва да се използва за съхраняване на телефонни номера в SQL Server 2005?

  5. Как работи функцията REPLICATE() в SQL Server (T-SQL)