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ładowanejuspFindProducts
., 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_price
I @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.