SQL Server Stored Procedure with Parameters

By: Greg Robidoux
overzicht

de echte kracht van opgeslagen procedures is de mogelijkheid om parameters door te geven en de opgeslagen procedure de verschillende verzoeken te laten verwerken die worden gedaan. In thistopic zullen we kijken naar het doorgeven van parameterwaarden aan een opgeslagen procedure.

uitleg

net zoals u de mogelijkheid hebt om parameters te gebruiken met uw SQL-code, kunt u ook uw opgeslagen procedures instellen om een of meer parameterwaarden te accepteren. Alle voorbeelden maken gebruik van de dventureworks-database.,

een SQL-opgeslagen Procedure aanmaken met Parameters

  1. om een opgeslagen procedure met parameters aan te maken met behulp van de volgende syntaxis:
  2. procedure aanmaken DBO.uspgetaddress @City nvarchar (30) AS
  3. Zie details en voorbeelden hieronder

SQL Server Query om te zetten in een opgeslagen Procedure

Hieronder is de query die we willen gebruiken om de opgeslagen procedure aan te maken.

USE AdventureWorksGOSELECT * FROM Person.AddressGO

het idee is om de opgeslagen procedure te maken waarbij de stad wordt doorgegeven aan de ondersteunde procedure zodat het dynamische resultaten kan creëren., Dit kan als volgt worden gedaan met behulp van een variabele. Als we de onderstaande code uitvoeren, zal het alleen de resultaten voor NewYork retourneren.

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

We kunnen deze aanpak gebruiken en de @City variabele bijwerken, maar er is een betere manier om dit te doen door een opgeslagen procedure aan te maken.

Create SQL Server Stored Procedure with One Parameter

In dit voorbeeld zullen we de persoon bevragen.Address table uit de AdventureWorksdatabase, maar in plaats van alle records terug te krijgen zullen we het beperken tot slechts een particularcity., Dit voorbeeld gaat ervan uit dat er een exacte overeenkomst zal zijn op de waarde van de stad die wordt doorgegeven.

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

Om deze opgeslagen procedure die wij zouden uitvoeren, als volgt:

EXEC dbo.uspGetAddress @City = 'New York'

Verwijderen van de Opgeslagen Procedure

Als u de opgeslagen procedure en u wilt opnieuw de storedprocedure met dezelfde naam, u kunt het verwijderen met behulp van de followingbefore probeert te maken van het weer.

USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO

Als u probeert de opgeslagen procedure aan te maken en deze bestaat al, krijgt u een foutmelding.,

MSG 2714, niveau 16, Status 3, Procedure uspGetAddress, Regel 1
er is al een object genaamd ‘uspGetAddress’ in de database.

SQL Server opgeslagen Procedure met Parameter met Joker

We kunnen ook hetzelfde doen, maar de gebruikers toestaan om ons een startpunt te geven om de gegevens te doorzoeken.

Hier kunnen we de “=” veranderen in een LIKE En De “%” Joker gebruiken.

Dit kan als volgt worden uitgevoerd om alle steden te vinden die met nieuw beginnen.,

EXEC dbo.uspGetAddress @City = 'New'

SQL Server opgeslagen Procedure fout wanneer Parameter niet doorgegeven

In beide voorbeelden wordt aangenomen dat een parameterwaarde altijd zal worden doorgegeven. Als u de procedure probeert uit te voeren zonder een parametervalue door te geven, krijgt u een foutmelding zoals het volgende:

EXEC dbo.uspGetAddress
Msg 201, Level 16, State 4, Procedure uspGetAddress, Line0
Procedure of functie ‘uspgetaddress’ verwacht parameter ‘@City’, die niet is opgegeven.,

SQL Server opgeslagen Procedure met NULL als standaard Parameter

in de meeste gevallen is het altijd een goede gewoonte om alle parameterwaarden door te geven,maar soms is het niet mogelijk. Dus in dit voorbeeld gebruiken we de NULL-optie om je toe te staan een parameterwaarde niet door te geven. Als we deze storedprocedure maken en uitvoeren zoals het is, zal het geen gegevens retourneren, omdat het op zoek is naar Cityvalues die gelijk zijn aan NULL.

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

als we het volgende uitvoeren, zal het werken, maar er zullen geen gegevens worden geretourneerd.,

EXEC dbo.uspGetAddress

We kunnen deze opgeslagen procedure wijzigen en de IsNull-functie gebruiken om dit te achterhalen. Dus als een waarde wordt doorgegeven zal het de waarde gebruiken om de resultset te verkleinen en als een waarde niet wordt doorgegeven zal het alle records retourneren. (Opmerking: als de stad kolom NULL waarden heeft zal dit deze waarden niet bevatten. U zult extra logica moeten toevoegen voor City is NULL)

als we het onderstaande commando uitvoeren, zullen alle gegevens uit de tabel worden geretourneerd.,

EXEC dbo.uspGetAddress

Create SQL Server Stored Procedure with Multiple Parameters

het instellen van meerdere parameters is zeer eenvoudig. U hoeft alleen maar listeach parameter en het gegevenstype gescheiden door een komma zoals hieronder getoond.

om dit uit te voeren kunt u het volgende doen:

Laatste Update: 4/3/2020

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *