Параметры
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure базе данных SQL Azure Synapse Analytics Analytics Platform System (PDW) в Microsoft Fabric
Параметры используются для обмена данными между хранимой процедурой или функцией и вызвавшим ее приложением или инструментом.
- Входные параметры позволяют передать значение в хранимую процедуру или функцию.
- Выходные параметры позволяют возвратить из хранимой процедуры значение или переменную-курсор. Определяемые пользователем функции не могут задавать выходные параметры.
- Каждая хранимая процедура возвращает целочисленный код возврата. Если хранимая процедура не задает значение кода возврата явно, возвращается значение 0.
Использование входного параметра, выходного параметра и кода возврата поясняет следующая хранимая процедура:
-- 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
При вызове хранимой процедуры или функции значениями входных параметров могут быть или константы, или значения переменных. Значения выходных параметров и кодов возврата нужно возвращать в переменных. Значения параметров и кодов возврата можно назначать переменным Transact-SQL или переменным приложения.
Если хранимая процедура вызывается в пакете или скрипте, в качестве параметров и кодов возврата можно использовать переменные Transact-SQL, определенные в том же пакете. Например, ниже показан пакет, выполняющий созданную ранее процедуру. Входной параметр задается как константа, а выходной параметр и код возврата возвращаются в переменных Transact-SQL:
-- 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
Для обмена данными между переменными приложения, параметрами и кодами возврата в приложениях можно использовать маркеры параметров, связанные с переменными программы.
См. также
CREATE PROCEDURE (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
CREATE FUNCTION (Transact-SQL)
Параметры и повторное использование планов выполнения
Переменные (Transact-SQL)