SQL Server Uložené Procedury, Parametry
V předchozím tutoriálu, jste se naučili, jak vytvořit jednoduché uložené procedury, která zábaly SELECT
prohlášení. Když zavoláte tento uložený postup, jednoduše spustí dotaz a vrátí sadu výsledků.
v tomto tutoriálu rozšíříme uložený postup, který vám umožní předat jednu nebo více hodnot. Výsledek uloženého postupu se změní na základě hodnot parametrů.,Vytvoření uložená procedura s jedním parametrem
následující dotaz vrátí seznam produktů z products
tabulky v ukázkové databázi:
můžete vytvořit uložená procedura, která obtéká tento dotaz pomocí CREATE PROCEDURE
prohlášení:
Code language: SQL (Structured Query Language) (sql)
Nicméně, tentokrát můžeme přidat parametr uložené procedury k najít produkty, jejichž seznam cen jsou vyšší než vstupní cena:
V tomto příkladu:
- za Prvé, jsme přidali parametr s názvem
@min_list_price
uspFindProducts
uložené procedury., Každý parametr musí začínat znakem@
.AS DECIMAL
klíčová slova určují datový typ parametru@min_list_price
. Parametr musí být obklopen otvíracími a uzavíracími konzolami. - za Druhé, použili jsme
@min_list_price
parametr vWHERE
bodSELECT
prohlášení filtrovat pouze produkty, jejichž seznam cen jsou větší než nebo rovno@min_list_price
.,
Provedení uložená procedura s jedním parametrem
spustit uspFindProducts
uložené procedury, můžete předat argument je následující:
Code language: SQL (Structured Query Language) (sql)
uložená procedura vrací všechny produkty, jejichž seznam cen jsou větší než nebo rovno 100.,
Pokud změníte argument na 200, budete mít jinou sadu výsledků:
Code language: SQL (Structured Query Language) (sql)
Vytváření uložené procedury s více parametry
Uložené procedury může trvat jeden nebo více parametrů. Parametry jsou odděleny čárkami.,iv> uložené procedury tím, že přidá ještě jeden parametr s názvem @max_list_price
to:
Jednou uložené procedury je upravený úspěšně, můžete ji provést předáním dva argumenty, jeden pro @min_list_price
a další na @max_list_price
:
Code language: SQL (Structured Query Language) (sql)
ukazuje následující výstup:
Použití pojmenované parametry
V případě, že uložené procedury mají více parametrů, je to lepší a víc jasné, spustit uložené procedury pomocí pojmenovaných parametrů.,
například následující příkaz spustí uspFindProducts
uložené procedury pomocí pojmenované parametry @min_list_price
@max_list_price
:
Code language: SQL (Structured Query Language) (sql)
výsledek uložen postup je stejný, nicméně výrok je více zřejmé.
vytváření textových parametrů
následující příkaz přidá parametr @name
jako parametr řetězce znaků do uloženého postupu.,
V WHERE
bod SELECT
prohlášení, jsme přidali následující podmínky:
Code language: SQL (Structured Query Language) (sql)
Tím, uložená procedura vrací produktů, jejichž seznam cen jsou v rozmezí min a max, seznam cen a názvy produktů také obsahují část textu, která vás projít.,
Jednou uložené procedury je změněn úspěšně, můžete provést následující:
V tomto prohlášení, použili jsme uspFindProducts
uložené procedury k nalezení výrobku, jejichž seznam cen jsou v rozmezí 900 a 1000 a jejich názvy obsahují slovo Trek
.,
následující obrázek ukazuje výstup:
Vytváření volitelné parametry
Při spuštění uspFindProducts
uložené procedury, musíte projít všechny tři argumenty odpovídající tři parametry.
SQL Server umožňuje zadat výchozí hodnoty parametrů tak, že při volání uložené procedury, můžete přeskočit parametry s výchozími hodnotami.,
Viz následující uložené procedury:
V této uložená procedura, jsme přiřadili 0
jako výchozí hodnotu pro @min_list_price
parametr a 999,999
jako výchozí hodnotu pro @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.,
@min_list_price
a@max_list_price
parametry se nazývají volitelné parametry.
argumenty můžete samozřejmě předat také volitelným parametrům., Například následující příkaz vrátí všechny produkty, jejichž seznam cen jsou větší nebo rovno 6,000
a názvy obsahují slovo Trek
:
Code language: SQL (Structured Query Language) (sql)
Použití NULL jako výchozí hodnota
V uspFindProducts
uložené procedury, použili jsme 999,999
jako výchozí maximální ceníkové ceny. To není robustní, protože v budoucnu můžete mít produkty se seznamovými cenami, které jsou větší než to.,
typický technika, aby se zabránilo, je použít NULL
jako výchozí hodnota pro parametry:
V WHERE
klauzule, změnili jsme stav na rukojeť NULL
hodnota @max_list_price
parametr:
Code language: SQL (Structured Query Language) (sql)
následující prohlášení provede uspFindProducts
uložené procedury k nalezení výrobku, jejichž seznam cen jsou větší nebo rovna 500 a názvy obsahují slovo Haro
.,
Code language: SQL (Structured Query Language) (sql)
V tomto kurzu jste se naučili, jak vytvořit a spustit uložené procedury s jedním nebo více parametry. Také jste se naučili, jak vytvořit volitelné parametry a používat NULL jako výchozí hodnoty parametrů.