Articles

SQL Server opgeslagen Procedureparameters

In de vorige tutorial hebt u geleerd hoe u een eenvoudige opgeslagen procedure kunt maken die een SELECT – instructie bevat. Wanneer u deze opgeslagen procedure, het gewoon draait de query en geeft een resultaat set.

in deze tutorial zullen we de opgeslagen procedure uitbreiden waarmee u een of meer waarden kunt doorgeven. Het resultaat van de opgeslagen procedure zal veranderen op basis van de waarden van de parameters.,Het maken van een opgeslagen procedure met één parameter

De volgende query retourneert een lijst met producten uit de products tabel in de voorbeeld data:

U kunt het maken van een opgeslagen procedure die loopt deze query met behulp van de CREATE PROCEDURE verklaring:

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

Echter, deze keer kunnen we een parameter toevoegen om de opgeslagen procedure voor het vinden van de producten waarvan de prijzen hoger zijn dan een input-prijs:

In dit voorbeeld:

  • Eerste, voegden we een parameter met de naam @min_list_price om het uspFindProducts opgeslagen procedure., Elke parameter moet beginnen met het teken @. DeAS DECIMAL sleutelwoorden specificeren het gegevenstype van de @min_list_price parameter. De parameter moet worden omgeven door de opening en sluiting haken.
  • ten tweede hebben we @min_list_price parameter gebruikt in de WHERE clausule van de SELECT verklaring om alleen de producten te filteren waarvan de catalogusprijzen groter of gelijk zijn aan de @min_list_price.,

Uitvoeren van een opgeslagen procedure met één parameter

Voor het uitvoeren van de uspFindProducts opgeslagen procedure, u bent geslaagd voor een argument als volgt:

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

De opgeslagen procedure retourneert alle producten waarvan de prijzen groter zijn dan of gelijk zijn aan 100.,

Als u het argument naar 200 wijzigt, krijgt u een andere resultaatset:

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

een opgeslagen procedure aanmaken met meerdere parameters

opgeslagen procedures kunnen een of meer parameters nemen. De parameters worden gescheiden door komma ‘ s.,iv> opgeslagen procedure door het toevoegen van een parameter met de naam @max_list_price aan:

Zodra de opgeslagen procedure is succesvol gewijzigd, kunt u het uitvoeren van het door het passeren van twee argumenten, één voor @min_list_price, en de @max_list_price:

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

Het volgende toont de output:

het Gebruik van benoemde parameters

In het geval van opgeslagen procedures met meerdere parameters, het is beter en meer duidelijk aan het uitvoeren van de opgeslagen procedures met behulp van named parameters.,

bijvoorbeeld, het volgende statement voert deuspFindProducts opgeslagen procedure uit met behulp van de genoemde parameters @min_list_priceen @max_list_price:

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

het resultaat van de opgeslagen procedure is hetzelfde, maar het statement is duidelijker.

tekstparameters aanmaken

het volgende statement voegt de parameter @name toe als een tekenstringparameter aan de opgeslagen procedure.,

In deWHERE clausule van deSELECT statement hebben we de volgende voorwaarde toegevoegd:

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

door dit te doen, retourneert de opgeslagen procedure de producten waarvan de catalogusprijzen in het bereik van min en max catalogusprijzen liggen en bevatten de productnamen ook een stuk tekst dat u doorgeeft.,

zodra de opgeslagen procedure met succes is gewijzigd, kunt u het als volgt uitvoeren:

in dit statement hebben we de uspFindProducts opgeslagen procedure gebruikt om het product te vinden waarvan de catalogusprijzen tussen 900 en 1000 liggen en hun namen het woord Trekbevatten.,

De volgende afbeelding toont de uitvoer:

optionele parameters aanmaken

wanneer u de uspFindProducts opgeslagen procedure uitvoert, moet u alle drie de bijbehorende argumenten doorgeven naar de drie parameters.met

SQL Server kunt u standaardwaarden voor parameters opgeven, zodat u, wanneer u opgeslagen procedures aanroept, de parameters met standaardwaarden kunt overslaan.,

zie de volgende opgeslagen procedure:

in deze opgeslagen procedure hebben we 0 toegewezen als de standaardwaarde voor de @min_list_price parameter en 999,999 als de standaardwaarde voor de @max_list_price parameter.,

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.,

De @min_list_price en @max_list_price parameters worden optionele parameters genoemd.

natuurlijk kunt u de argumenten ook doorgeven aan de optionele parameters., Bijvoorbeeld, de volgende instructie geeft als resultaat alle producten waarvan de prijzen groter zijn dan of gelijk aan 6,000 en de namen bevatten het woord Trek:

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

het Gebruik van NULL als de standaard waarde

In de uspFindProducts opgeslagen procedure, we gebruikten 999,999 als standaard lijst maximum prijs. Dit is niet robuust, want in de toekomst kunt u producten met de catalogusprijzen die hoger zijn dan dat.,

Een typische techniek om dit te voorkomen is het gebruik van NULL als standaard waarde voor de parameters:

In de WHERE component, hebben we de voorwaarde te hanteren NULL waarde voor de @max_list_price parameter:

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

De volgende verklaring voert de uspFindProducts opgeslagen procedure om het product te vinden waarvan de lijst prijzen zijn groter of gelijk aan 500 en bevatten de namen van de word – Haro.,

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

in deze tutorial hebt u geleerd hoe u opgeslagen procedures kunt maken en uitvoeren met een of meer parameters. U hebt ook geleerd hoe u optionele parameters kunt maken en NULL als standaardwaarden voor de parameters kunt gebruiken.