Sql server T-SQL存储过程将值返回到变量中

Sql server T-SQL存储过程将值返回到变量中,sql-server,stored-procedures,sql-server-2012-express,Sql Server,Stored Procedures,Sql Server 2012 Express,我在MS SQL 2012 Express上有一个简单的存储过程,它返回一个执行以下操作的结果: DECLARE @value INT; SELECT @value; 同时,我尝试调用这个存储过程 DECLARE @result INT; EXEC @result = SpFoo ..... 但是,我从SpFoo获取的@result值为0 如何获取存储过程返回的实际值 谢谢首先在被调用的sp中将@Value声明为输出参数 CREATE PROCEDURE spCallee @Value IN

我在MS SQL 2012 Express上有一个简单的存储过程,它返回一个执行以下操作的结果:

DECLARE @value INT;
SELECT @value;
同时,我尝试调用这个存储过程

DECLARE @result INT;
EXEC @result = SpFoo .....
但是,我从
SpFoo
获取的
@result
值为0

如何获取存储过程返回的实际值


谢谢

首先在被调用的sp中将@Value声明为输出参数

CREATE PROCEDURE spCallee
@Value INT Output
AS
BEGIN
    set @Value = 1

END
GO
在调用者sp中获得这样的结果

CREATE PROCEDURE spCaller
AS
BEGIN

    declare @Result as int = 0

    EXEC spCallee @Value = @Result Output

    Select @Result
END
GO

我知道的唯一方法是将结果放入表中,然后从中获取:

DECLARE @tmp TABLE (Result int)
DECLARE @res int

INSERT INTO @tmp
EXECUTE [Procedure]...

SELECT @res = Result
FROM @tmp

这不会返回一个值(即语句)。这将产生一个结果集。您可以使用捕获,也可以为此使用参数。最好的方法是将sp转换为函数,然后您可以随时返回所需的值。当您尝试生成结果集时,您不能将其包含在select中。谢谢大家。我现在明白了它的局限性和可能性。