SQL 存储过程中的返回值

如何在 SQL 存储过程中使用返回值,或如何使用返回值从存储过程返回消息(附带示例)。

SQL Server 存储过程中的返回值仅返回整数值。默认情况下,如果成功执行任何存储过程,它将返回 0。为了演示此存储过程的返回值,我们将使用下表。

Source Table Data 1

SQL 存储过程返回值示例

在此示例中,我们将向您展示服务器返回的默认返回值。为了演示返回值,我将执行之前创建的存储过程。

我建议您参考 SP 简介 文章来学习 SQL Server 存储过程的基础知识。并参考 存储过程中的输入参数 文章来了解此存储过程背后的定义。

Execute existing SP 2

在这里,我们将职业值设置为“管理”。

Enter the Value

单击“确定”按钮后,将打开一个新的查询窗口,其中包含以下自动生成的代码。如您所见,它返回 0 作为返回值。0 表示成功。

DECLARE	@return_value int

EXEC	@return_value = [dbo].[spGetEmployeeDetails]
		@Occupation = N'Management'

SELECT	'Return Value' = @return_value

GO
Return Values in Stored Procedure 4

带返回值的 SQL Server 存储过程示例 2

在此返回值示例中,我们将展示如何在存储过程中使用返回值。请参考 Select SP 文章在存储过程中编写 Select 语句

在过程中,我们将使用 COUNT 来查找 Employee Duplicate 表中的员工数量,然后返回该值。

-- Example for Stored Procedure with Output Parameters

CREATE PROCEDURE [dbo].[spCountEmployees]
AS
BEGIN
	RETURN (SELECT COUNT(EmpID)FROM [EmployeeDuplicates])
END
Messages
--------
Command(s) completed successfully.

让我执行存储过程。

-- Declare a Variable of Type Int. Should match with SP's Output parameter
DECLARE	@TotalEmployees INT 

-- Assigning the Output of a Stored Procedure to Declared variable
EXEC @TotalEmployees = [dbo].[spCountEmployees]

-- Printing the Output
PRINT @TotalEmployees
SP Return Values 6

SP 返回值示例 3

在此存储过程示例中,我将向您展示如果打印字符串(Varchar)数据作为返回值会发生什么。在这里,我们将查找姓氏为 Gateway 的员工的职业。(您也可以尝试使用输入参数,而不是硬编码值)。

CREATE PROCEDURE [dbo].[spEmployeeName]
AS
BEGIN
 RETURN (SELECT [Occupation] FROM [EmployeeDuplicates]
         WHERE [LastName] = N'Gateway')
END
Messages
--------
Command(s) completed successfully.

让我执行存储过程。

DECLARE	@EmpName VARCHAR(50) 
EXEC @EmpName = [dbo].[spEmployeeName]
PRINT @EmpName

从下面的屏幕截图可以看出,它正在抛出错误。因为返回值始终只显示整数。

Return Values in Stored Procedure Error MSG 254, Conversion Fail 8

评论已关闭。