SQL Server Uložené Procedury s Parametry


Od: Greg Robidoux
Přehled

skutečná síla uložené procedury je schopnost předat parametry a máte to uložené procedury zpracování odlišných požadavků, které jsou vyrobeny. V thistopic se podíváme na předávání hodnot parametrů uloženému postupu.

Vysvětlení

Stejně jako máte možnost použít parametry s SQL kódu můžete alsosetup vaše uložené procedury přijmout jednu nebo více hodnot parametrů. Allexamples používají databázi AdventureWorks.,

Vytváření SQL Uložené Procedury s Parametry

  1. vytvořit uloženou proceduru s parametry, pomocí následující syntaxe:
  2. CREATE procedure dbo.uspGetAddress @City nvarchar(30)
  3. zobrazit podrobnosti a příklady

SQL Server Query Proměnit v Uložené Postup

Níže je dotaz chceme použít k vytvoření uložená procedura.

USE AdventureWorksGOSELECT * FROM Person.AddressGO

myšlenka je vytvořit uložený postup, ve kterém je město předáno do uloženého postupu, aby mohlo vytvářet dynamické výsledky., To lze provést následujícím způsobemproměnná. Pokud spustíme níže uvedený kód, vrátí se pouze výsledky pro NewYork.

USE AdventureWorksGODECLARE @City nvarchar(30)SET @City = 'New York'SELECT * FROM Person.AddressWHERE City = @CityGO

tento přístup bychom mohli použít a aktualizovat proměnnou @City, ale existuje lepší způsob, jak to provést vytvořením uloženého postupu.

vytvořit SQL Server uložený postup s jedním parametrem

v tomto příkladu budeme dotazovat osobu.Tabulka adres z AdventureWorksdatabase, ale místo toho, abychom získali zpět všechny záznamy, omezíme je pouze na určitou oblast., Tento příklad předpokládá, že bude přesná shoda na hodnotách Městatak je předán.

USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)ASSELECT * FROM Person.AddressWHERE City = @CityGO

volání uložené procedury bychom to provést takto:

EXEC dbo.uspGetAddress @City = 'New York'

Odstranění Uložené Procedury

Pokud jste vytvořili uložené procedury a chcete obnovit storedprocedure se stejným názvem, můžete ji odstranit pomocí followingbefore snaží vytvořit znovu.

USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO

Pokud se pokusíte vytvořit uložený postup a již existuje, zobrazí se chybová zpráva.,

Msg 2714, Level 16, State 3, Procedure uspGetAddress, Line 1
v databázi je již objekt s názvem ‚uspGetAddress‘.

SQL Server uložený postup s parametrem pomocí zástupných znaků

můžeme také udělat totéž, ale umožnit uživatelům, aby nám výchozí bodpro vyhledávání dat.

zde můžeme změnit “ = „na podobně a použít zástupnou kartu“%“.

toto lze spustit následujícím způsobem, abyste našli všechna města, která začínají novým.,

EXEC dbo.uspGetAddress @City = 'New'

SQL Server Uložené Procedury Chyba, Když Parametr Není Prošel

V obou řízení příklady předpokládá, že hodnota parametru se vždycky budu prošel. Pokud se pokusíte provést postup bez absolvování parametervalue dostanete chybovou zprávu, jako například následující:

EXEC dbo.uspGetAddress
Msg 201, Úroveň 16, Stav 4, Postup uspGetAddress, Line0
Procedura nebo funkce ‚uspGetAddress‘ očekává, že parametr ‚@City‘, která není součástí dodávky.,

SQL Server uložený postup pomocí NULL jako výchozí parametr

ve většině případů je vždy dobrou praxí předat všechny hodnoty parametrů, ale někdy to není možné. Takže v tomto příkladu používáme nulovou volbumožnit, abyste neprošli hodnotou parametru. Pokud vytvoříme a spustíme tento obchodprocedure, jak je, nevrátí žádná data, protože hledá nějaké Cityvalues, které se rovnají NULL.

USE AdventureWorksGOCREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30) = NULLASSELECT *FROM Person.AddressWHERE City = @CityGO

Pokud spustíme následující, bude to fungovat, ale žádná data nebudou vrácena.,

EXEC dbo.uspGetAddress

mohli bychom tento uložený postup změnit a pomocí funkce ISNULL se dostat kolemtento. Pokud je tedy hodnota předána, použije hodnotu k zúžení resultset a pokud hodnota není předána, vrátí všechny záznamy. (Poznámka: ifthe město sloupec má nulové hodnoty to nebude zahrnovat tyto hodnoty. Budete musetpřidat další logiku pro město je NULL)

Nyní pokud spustíme níže uvedený příkaz, všechna data budou vrácena z tabulky.,

EXEC dbo.uspGetAddress

Vytvořit SQL Server Uložené Procedury s Více Parametry

Nastavení více parametrů je velmi snadné dělat. Stačí si poslechnout každý parametr a datový typ oddělený čárkou, jak je uvedeno níže.

Chcete-li to provést, můžete provést některou z následujících možností:

Poslední aktualizace: 4/3/2020

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *