如何在另一个srored过程中的一个存储过程中使用SELECT的结果?

sha*_*oth 6 sql database sql-server

我有一个存储过程来计算几个值和SELECT它们:

CREATE PROCEDURE [dbo].[MyProc]
AS
   DECLARE @value1 int;
   DECLARE @value2 int;
   SET @value1 =...
   IF( @value1 IS NULL ) 
       RETURN 0;
   SET @value2 =...
   SELECT @value1 AS Value1, @value2 AS Value2;
RETURN 0;
Run Code Online (Sandbox Code Playgroud)

我知道我可以把它变成一个表格函数,但我宁愿不这样做,因为RETURN在中间 - 有时候没有什么可以返回.

我想从另一个存储过程调用该存储过程并使用在另一个过程中检索的值SELECT.我怎么做?

And*_*ttó 3

您可以创建一个临时表并将这两个值插入其中。

CREATE TABLE #Temp (value1 int, value2 int)

INSERT INTO #Temp (value1, value2)
EXEC [dbo].[MyProc]
Run Code Online (Sandbox Code Playgroud)

如果 Value1 为 NULL,#Temp 中将没有记录,在这种情况下不需要返回 0。

但如果这不是您的目标,并且您需要返回 0,那么您应该使用 @value1 和 @value2 作为输出参数。