參數

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

參數是用以交換預存程序和呼叫預存程序的函數、應用程式或工具之間的資料:

  • 輸入參數可讓呼叫者將資料值傳遞給預存程序或函數。
  • 輸出參數可讓預存程序將資料值或資料指標變數傳回給呼叫者。 使用者自訂函數無法指定輸出參數。
  • 每個預存程序傳回一個整數傳回碼給呼叫者。 如果預存程序沒有明確設定傳回碼的值,傳回碼為 0。

下列的預存程序範例中將顯示輸入參數、輸出參數和傳回碼 (Return Code) 的使用方式:

-- 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)