Dela via


Parameters

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-databas i Förhandsversion av Microsoft Fabric

Parametrar används för att utbyta data mellan lagrade procedurer och funktioner och programmet eller verktyget som kallas för den lagrade proceduren eller funktionen:

  • Med indataparametrar kan anroparen skicka ett datavärde till den lagrade proceduren eller funktionen.
  • Med utdataparametrar kan den lagrade proceduren skicka tillbaka ett datavärde eller en markörvariabel till anroparen. Användardefinierade funktioner kan inte ange utdataparametrar.
  • Varje lagrad procedur returnerar ett heltalsreturkod till anroparen. Om den lagrade proceduren inte uttryckligen anger ett värde för returkoden är returkoden 0.

Följande lagrade procedur visar användningen av en indataparameter, en utdataparameter och en returkod:

-- Create a procedure that takes one input parameter and returns one output parameter and a return code.
CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
         @MaxTotal INT OUTPUT
AS
-- Declare and initialize a variable to hold @@ERROR.
DECLARE @ErrorSave INT
SET @ErrorSave = 0

-- Do a SELECT using the input parameter.
SELECT FirstName, LastName, JobTitle
FROM HumanResources.vEmployee
WHERE EmployeeID = @EmployeeIDParm

-- Save any nonzero @@ERROR value.
IF (@@ERROR <> 0)
   SET @ErrorSave = @@ERROR

-- Set a value in the output parameter.
SELECT @MaxTotal = MAX(TotalDue)
FROM Sales.SalesOrderHeader;

IF (@@ERROR <> 0)
   SET @ErrorSave = @@ERROR

-- Returns 0 if neither SELECT statement had an error; otherwise, returns the last error.
RETURN @ErrorSave
GO

När en lagrad procedur eller funktion körs kan indataparametrar antingen ha värdet inställt på en konstant eller använda värdet för en variabel. Utdataparametrar och returkoder måste returnera sina värden till en variabel. Parametrar och returkoder kan utbyta datavärden med antingen Transact-SQL variabler eller programvariabler.

Om en lagrad procedur anropas från en batch eller ett skript kan parametrarna och returkodvärdena använda Transact-SQL variabler som definierats i samma batch. Följande exempel är en batch som kör proceduren som skapades tidigare. Indataparametern anges som en konstant och utdataparametern och returkoden placerar sina värden i Transact-SQL variabler:

-- Declare the variables for the return code and output parameter.
DECLARE @ReturnCode INT
DECLARE @MaxTotalVariable INT

-- Execute the stored procedure and specify which variables
-- are to receive the output parameter and return code values.
EXEC @ReturnCode = SampleProcedure @EmployeeIDParm = 19,
   @MaxTotal = @MaxTotalVariable OUTPUT

-- Show the values returned.
PRINT ' '
PRINT 'Return code = ' + CAST(@ReturnCode AS CHAR(10))
PRINT 'Maximum Quantity = ' + CAST(@MaxTotalVariable AS CHAR(10))
GO

Ett program kan använda parametermarkörer som är bundna till programvariabler för att utbyta data mellan programvariabler, parametrar och returkoder.

See Also

SKAPA PROCEDUR (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
SKAPA FUNKTION (Transact-SQL)
Avsnittet Om återanvändning av parametrar och körningsplan
Variables (Transact-SQL)