我们可以有一个带输出参数和return语句的存储过程吗?

时间:2010-05-04 07:42:16

标签: sql-server-2005 stored-procedures

存储过程可以有输出参数和return语句吗?如果是这样,任何人都可以给我一个简单的例子。谢谢大家。

4 个答案:

答案 0 :(得分:2)

存储过程只能在return语句中返回整数类型,并且可以包含任意数量的out参数。 See this用于支持此内容的参考文献。

最简单的存储过程

从SP返回整数值

CREATE procedure [sys].[sp_name]
(
    @var1       bit = 0,
    @publisher  smallint                    
)
AS
BEGIN

    IF @var1<> 0
        RETURN (@publisher  )
 END

使用输出参数

CREATE PROCEDURE GetImmediateManager
   @employeeID INT,
   @managerID INT OUTPUT
AS
BEGIN
   SELECT @managerID = ManagerID 
   FROM HumanResources.Employee 
   WHERE EmployeeID = @employeeID
END

您可以使用事务,异常处理(尝试Catch),DDL和DML查询,在一个存储过程中调用另一个存储过程以及更多操作。

请评论存储过程支持的更多功能

答案 1 :(得分:1)

如果你指的是给出整数的标准RETURN语句,那么是

如果你的意思是UDF RETURN,那么没有。但是存储过程可以有一个正常的SELECT

答案 2 :(得分:1)

您可以自由使用OUTPUT参数和单个RETURN值:

CREATE PROCEDURE RaiseToPower (
      @IN  INT, 
      @OUT INT OUTPUT
   )
AS
   DECLARE @POWER INT 
   SET @POWER = 3
   SET @OUT = POWER(@IN, @POWER)
   RETURN @POWER
GO

/**/
DECLARE @POW INT, @RESULT INT

EXEC @POW = dbo.RaiseToPower 2, @RESULT OUTPUT 

SELECT 2, 'raised to', @POW, 'is', @RESULT

>> 2 raised to 3 is 8

答案 3 :(得分:-1)

没有。它可以是存储过程,也可以是标量函数。

标量函数返回一个值,并在参数中取0到n。

存储过程可以从0到n输入参数,并且可以有0到n个输出参数。