Sql server T-SQL存储过程将值返回到变量中
我在MS SQL 2012 Express上有一个简单的存储过程,它返回一个执行以下操作的结果: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
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中。谢谢大家。我现在明白了它的局限性和可能性。