Articles

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 v WHERE bod SELECT 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ů.