Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utwórz procedurę składowaną w SQL Server 2017

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.
  • Szybsze wykonywanie:procedury składowane są analizowane i optymalizowane zaraz po ich utworzeniu, a procedura składowana jest przechowywana w pamięci. Oznacza to, że będzie działać znacznie szybciej niż wysyłanie wielu wierszy kodu SQL z aplikacji do SQL Server. Wykonanie tego wymaga, aby SQL Server kompilował i optymalizował kod SQL przy każdym uruchomieniu.
  • Zmniejszony ruch w sieci:wysyłanie wielu wierszy kodu SQL przez sieć do programu SQL Server wpłynie na wydajność sieci. Jest to szczególnie ważne, jeśli masz setki linii kodu SQL i/lub masz dużą aktywność w swojej aplikacji. Uruchomienie kodu na serwerze SQL Server (jako procedury składowanej) eliminuje potrzebę wysyłania tego kodu przez sieć. Jedynym ruchem sieciowym będą dostarczone parametry i wyniki dowolnego zapytania.
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.

  1. 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
  2. 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.

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

  1. 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
  2. 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";

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak serializować duży wykres obiektu .NET do obiektu BLOB programu SQL Server bez tworzenia dużego bufora?

  2. Jak zmienić nazwy wszystkich domyślnych ograniczeń zgodnie ze standardami nazewnictwa lub konwencją nazewnictwa w SQL Server — SQL Server / TSQL Tutorial Part 93

  3. Jak usunąć przy użyciu INNER JOIN w programie SQL Server?

  4. Jak usunąć wiodące i końcowe białe znaki w SQL Server — TRIM()

  5. Bazy danych systemu SQL Server — podstawowe pojęcia