Articles

parametry procedury składowanej SQL Server

w poprzednim samouczku nauczyłeś się, jak utworzyć prostą procedurę składowaną, która zawija instrukcję SELECT. Gdy wywołujesz tę procedurę składowaną, po prostu uruchamia ona zapytanie i zwraca zestaw wyników.

w tym samouczku rozszerzymy procedurę składowaną, która pozwala przekazać do niej jedną lub więcej wartości. Wynik procedury składowanej zmieni się w zależności od wartości parametrów.,Tworzenie procedury składowanej z jednym parametrem

następujące zapytanie zwraca listę Produktów z tabeli products w przykładowej bazie danych:

możesz utworzyć procedurę składowaną, która zawija to zapytanie, używając instrukcji CREATE PROCEDURE:

Code language: SQL (Structured Query Language) (sql)

, tym razem możemy dodać parametr do procedury składowanej, aby znaleźć produkty, których ceny katalogowe są większe niż cena wejściowa:

w tym przykładzie:

  • najpierw dodaliśmy parametr o nazwie @min_list_price do procedury składowanej uspFindProducts., Każdy parametr musi zaczynać się znakiem @. Słowa kluczoweAS DECIMAL określają typ danych parametru@min_list_price. Parametr musi być otoczony nawiasami otwierającymi i zamykającymi.
  • Po Drugie, użyliśmy@min_list_price parametr wWHERE klauzuliSELECT do filtrowania tylko produktów, których ceny katalogowe są większe lub równe@min_list_price.,

wykonywanie procedury składowanej z jednym parametrem

aby wykonać uspFindProducts procedura składowana, przekazujesz jej argument w następujący sposób:

Code language: SQL (Structured Query Language) (sql)

procedura składowana zwraca wszystkie produkty, których ceny katalogowe są większe lub równe 100.,

Jeśli zmienisz argument na 200, otrzymasz inny zestaw wyników:

Code language: SQL (Structured Query Language) (sql)

Tworzenie przechowywanych danych procedura z wieloma parametrami

procedury składowane mogą przyjmować jeden lub więcej parametrów. Parametry są oddzielone przecinkami.,iv> procedura składowana dodając do niej jeszcze jeden parametr o nazwie @max_list_price:

gdy procedura składowana zostanie pomyślnie zmodyfikowana, możesz ją wykonać przekazując dwa argumenty, jeden dla @min_list_price, a drugi dla @max_list_price:

Code language: SQL (Structured Query Language) (sql)

poniższe wyjście pokazuje:

używanie nazwanych parametrów

w przypadku, gdy procedury składowane mają wiele parametrów, jest lepiej i wyraźniej do wykonywania procedur składowanych przy użyciu nazwanych parametrów.,

na przykład, następujące polecenie wykonuje uspFindProducts procedurę składowaną przy użyciu nazwanych parametrów @min_list_priceI @max_list_price:

Code language: SQL (Structured Query Language) (sql)

wynik procedura składowana jest taka sama, jednak oświadczenie jest bardziej oczywiste.

Tworzenie parametrów tekstowych

poniższe polecenie dodaje parametr@name jako parametr ciągu znaków do procedury składowanej.,

w WHERE klauzuli SELECT dodaliśmy następujący warunek:

Code language: SQL (Structured Query Language) (sql)

w ten sposób procedura składowana zwraca produkty, których ceny katalogowe mieszczą się w zakresie min i max cen katalogowych, a nazwy produktów zawierają również fragment tekstu że się poddajesz.,

po pomyślnej zmianie procedury składowanej można ją wykonać w następujący sposób:

w tej instrukcji użyliśmy procedury składowanej uspFindProducts, aby znaleźć produkt, którego ceny katalogowe mieszczą się w zakresie 900 i 1000, a ich nazwy zawierają słowo Trek.,

poniższy obrazek pokazuje wyjście:

Tworzenie opcjonalnych parametrów

podczas wykonywania uspFindProducts procedura składowana, musisz przekazać wszystkie trzy argumenty odpowiadające trzem parametrom.

SQL Server pozwala określić domyślne wartości parametrów, dzięki czemu podczas wywoływania procedur składowanych można pominąć parametry z wartościami domyślnymi.,

Patrz następująca procedura składowana:

w tej procedurze składowanej przypisaliśmy 0 jako domyślną wartość parametru @min_list_price oraz 999,999 jako domyślną wartość @max_list_price parametr.,

Once the stored procedure is compiled, you can execute it without passing the arguments to @min_list_price and @max_list_price parameters:

Code language: SQL (Structured Query Language) (sql)

In this case, the stored procedure used 0 for @min_list_price parameter and 999,999 for the @max_list_price parameter when it executed the query.,

parametry@min_list_price I@max_list_price są nazywane parametrami opcjonalnymi.

oczywiście można również przekazać argumenty do opcjonalnych parametrów., Na przykład, poniższe polecenie zwraca wszystkie produkty, których ceny katalogowe są większe lub równe 6,000, a nazwy zawierają słowo Trek:

Code language: SQL (Structured Query Language) (sql)

używając null jako domyślnej wartości

w uspFindProducts procedury składowanej, użyliśmy 999,999 jako domyślnej maksymalnej ceny katalogowej. Nie jest to solidne, ponieważ w przyszłości możesz mieć produkty z cenami katalogowymi, które są większe niż to.,

typową techniką, aby tego uniknąć, jest użycie NULL jako domyślnej wartości parametrów:

w klauzuli WHERE zmieniliśmy warunek obsługi NULL wartość dla @max_list_price parametr:

Code language: SQL (Structured Query Language) (sql)

poniższe polecenie wykonuje uspFindProducts procedurę składowaną, aby znaleźć produkt, którego ceny katalogowe są większe lub równe 500, a nazwy zawierają słowo Haro.,

Code language: SQL (Structured Query Language) (sql)

w tym samouczku nauczyłeś się, jak tworzyć i wykonywać procedury składowane z jednym lub więcej parametrów. Nauczyłeś się również, jak tworzyć opcjonalne parametry i używać NULL jako wartości domyślnych dla parametrów.