Share via


매개 변수

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System(PDW)

매개 변수는 저장 프로시저나 함수를 호출하는 도구 또는 애플리케이션, 함수 및 저장 프로시저 간에 데이터를 교환하는 데 사용됩니다.

  • 입력 매개 변수를 사용하면 호출자가 데이터 값을 저장 프로시저 또는 함수에 전달할 수 있습니다.
  • 출력 매개 변수를 사용하면 저장 프로시저가 데이터 값 또는 커서 변수를 호출자에게 다시 전달할 수 있습니다. 사용자 정의 함수는 출력 매개 변수를 지정할 수 없습니다.
  • 모든 저장 프로시저는 호출자에게 정수 반환 코드를 반환합니다. 저장 프로시저에서 반환 코드에 대한 값을 명시적으로 설정하지 않으면 반환 코드는 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)