SQL Server Stored Procedure med Parametre

Af: Greg Robidoux
Oversigt

Den reelle effekt af lagrede procedurer er evnen til at videregive parametre og havethe gemt procedure håndtere de forskellige anmodninger, der er foretaget. I thistopic vil vi se på at overføre parameterværdier til en gemt procedure.

forklaring

ligesom du har mulighed for at bruge parametre med din S .l-kode, kan du også indstille dine gemte procedurer for at acceptere en eller flere parameterværdier. Alleampamples bruger theadventure .orks database.,

Oprettelse af en SQL Stored Procedure med Parametre

  1. for At oprette en lagret procedure med parametre ved hjælp af følgende syntaks:
  2. CREATE PROCEDURE dbo.uspGetAddress @City nvarchar (30) som
  3. se detaljer og eksempler nedenfor

s .l-Serverforespørgsel for at blive en gemt Procedure

nedenfor er den forespørgsel, vi vil bruge til at oprette den gemte procedure.

USE AdventureWorksGOSELECT * FROM Person.AddressGO

ideen er at oprette den lagrede procedure, hvor byen overføres til den gemte procedure, så den kan skabe dynamiske resultater., Dette kan gøres som følger ved hjælp afen variabel. Hvis vi kører nedenstående KODE, Returnerer den kun resultaterne for Ne .york.

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

Vi kunne bruge denne tilgang og fortsætte med at opdatere @City-variablen, men der er en bedre måde at gøre dette ved at oprette en gemt procedure.

Opret s .l Server gemt Procedure med en Parameter

i dette eksempel vil vi forespørge personen.Adressetabellen fra Adventureksorksdatabasen, men i stedet for at få alle poster tilbage, vil vi begrænse den til kun en bestemt by., Dette eksempel forudsætter, at der vil være en nøjagtig match på byens værdidet er bestået.

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

for At kalde dette er lagret procedure, vi ville udføre den som følger:

EXEC dbo.uspGetAddress @City = 'New York'

Sletning af en Lagret Procedure

Hvis du har oprettet, der er gemt procedure, og du ønsker at genskabe storedprocedure med samme navn, du kan slette det ved hjælp af den followingbefore forsøger at oprette den igen.

USE AdventureWorksGODROP PROCEDURE dbo.uspGetAddressGO

Hvis du forsøger at oprette den gemte procedure, og den allerede findes, får du en fejlmeddelelse.,

Msg 2714, Level 16, Staten 3, Procedure uspGetAddress, Linje 1
Der er allerede et objekt med navnet ‘uspGetAddress’ i databasen.

s .l Server gemt Procedure med Parameter ved hjælp af Wildildcard

Vi kan også gøre det samme, men giver brugerne mulighed for at give os et startpunktat søge i dataene.

Her kan vi ændre “=” til en lignende og bruge “%” wildildcard.

dette kan køres som følger for at finde alle byer, der starter med nye.,

EXEC dbo.uspGetAddress @City = 'New'

SQL Server Stored Procedure-Fejl, Når Parameter Ikke Bestået

I begge procedure eksempler antages det, at værdien af et parameter vil alwaysbe bestået. Hvis du forsøger at udføre den procedure, uden at passere en parametervalue vil du få en fejlmeddelelse som følgende:

EXEC dbo.uspGetAddress
Msg 201, Level 16, Stat 4, Proceduren uspGetAddress, Line0
Procedure eller funktion ‘uspGetAddress’ forventer parameter ‘@City’, whichwas medfølger ikke.,

s .l Server gemt Procedure ved hjælp af NULL som Standardparameter

i de fleste tilfælde er det altid en god praksis at videregive alle parameterværdier,men nogle gange er det ikke muligt. Så i dette eksempel bruger vi NULL-indstillingenfor at give dig mulighed for ikke at passere en parameterværdi. Hvis vi opretter og kører denne storedprocedure, som den er, Returnerer den ikke nogen data, fordi den leder efter nogen Cityvalues, der er lig med NULL.

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

Hvis vi kører følgende, fungerer det, men ingen data returneres.,

EXEC dbo.uspGetAddress

Vi kunne ændre denne lagrede procedure og bruge ISNULL-funktionen til at komme rundt. Så hvis en værdi er bestået, vil den bruge værdien til at indsnævre resultatsættet, og hvis en værdi ikke er bestået, vil den returnere alle poster. (Bemærk: ifthe City kolonne har NULL værdier dette vil ikke omfatte disse værdier. Du vil haveat tilføje yderligere logik for byen er NULL)

nu, hvis vi kører nedenstående kommando, vil alle data blive returneret fra tabellen.,

EXEC dbo.uspGetAddress

Opret SQL Server Stored Procedure med Flere Parametre

oprettelse af flere parametre, der er meget let at gøre. Du skal bare listehver parameter og datatypen adskilt af et komma som vist nedenfor.

for at udføre dette kan du gøre et af følgende:

sidste opdatering: 4/3/2020

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *