RETURN 语句无条件终止查询、存储过程或批处理。存储过程或批处理中 RETURN 语句后面的语句都不执行。
当在存储过程中使用 RETURN 语句时,此语句可以指定返回给调用应用程序、批处理或过程的整数值。如果 RETURN 未指定值,则存储过程返回 0。
大多数存储过程按常规使用返回代码表示存储过程的成功或失败。没有发生错误时存储过程返回值 0。任何非零值表示有错误发生。例如:
USE Northwind
GO
-- Create a procedure that takes one input parameter
-- and returns one output parameter and a return code.
CREATE PROCEDURE SampleProcedure @EmployeeIDParm INT,
@MaxQuantity 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, Title
FROM Employees
WHERE EmployeeID = @EmployeeIDParm
-- Save any nonzero @@ERROR value.
IF (@@ERROR <> 0)
SET @ErrorSave = @@ERROR
-- Set a value in the output parameter.
SELECT @MaxQuantity = MAX(Quantity)
FROM [Order Details]
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 批处理或存储过程可以将返回代码检索至整型变量:
DECLARE @ReturnStatus INT DECLARE @MaxQtyVariable INT EXECUTE @ReturnStatus = SampleProcedure @EmployeeIDParm = 9, @MaxQtyVariable = @MaxQuantity OUTPUT -- Show the values returned. PRINT ' 'PRINT 'Return code = ' + CAST(@ReturnStatus AS CHAR(10)) PRINT 'Maximum Quantity = ' + CAST(@MaxQtyVariable AS CHAR(10)) GO
调用存储过程的应用程序可以将返回代码所对应的参数标记与整型变量绑定。