我在MS SQL 2012 Express上有一个简单的存储过程,它返回一个结果,如:
DECLARE @value INT;
SELECT @value;
与此同时,我试图将此存储过程称为
DECLARE @result INT;
EXEC @result = SpFoo .....
但是,我从@result
SpFoo
获得的值为0。
如何获取存储过程返回的实际值?
由于
答案 0 :(得分: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
答案 1 :(得分:0)
我知道的唯一方法是将结果放到表中然后从中获取:
DECLARE @tmp TABLE (Result int)
DECLARE @res int
INSERT INTO @tmp
EXECUTE [Procedure]...
SELECT @res = Result
FROM @tmp