Sql 从另一个存储过程的结果设置存储过程中的变量

Sql 从另一个存储过程的结果设置存储过程中的变量,sql,Sql,我怎样才能做到以下几点 DECLARE @Var1 VARCHAR(200) DECLARE @Var2 VARCHAR(200) SET @Var1 = value1 from sp_someotherprocedure(@id) SET @Var2 = value1 from sp_someotherprocedure(@id) 像这样: EXEC @Var1 = sp_someotherprocedure(@id) 存储过程可以返回许多结果集。因此,它并不意味着要与SELECT一起使

我怎样才能做到以下几点

DECLARE @Var1 VARCHAR(200)
DECLARE @Var2 VARCHAR(200)

SET @Var1 = value1 from sp_someotherprocedure(@id)
SET @Var2 = value1 from sp_someotherprocedure(@id)
像这样:

EXEC @Var1 = sp_someotherprocedure(@id)

存储过程可以返回许多结果集。因此,它并不意味着要与SELECT一起使用。 它们可以用在你有 你应该仔细研究,然后从中选择

CREATE FUNCTION SalesByStore (@storeid varchar(30))
RETURNS TABLE AS
RETURN (SELECT t.title, s.qty
    FROM   sales s
    JOIN   titles t ON t.title_id = s.title_id
    WHERE  s.stor_id = @storeid)
然后你就这样称呼它:

SELECT * FROM SalesByStore('6380')

我创建了一个简单的示例,说明如何从存储过程的结果中提取数据。 为了将变量设置为存储过程的返回值,需要使用 带有存储过程的输出参数,它将返回值

CREATE PROCEDURE YourStoredProcedure 
(

    @i    int,
    @result int OUTPUT
)
AS
BEGIN
SET @i = 1
Set @result = @i + 10
return @result
END
-设置输出参数的代码

DECLARE @outputparameter AS int
exec @outputparameter =  YourStoredProcedure 10, @outputparameter output
print @outputparameter

这件事我来晚了,但我自己也遇到了这个问题。我和我的团队提出的解决方案是将存储过程的结果执行到一个临时表中,然后选择top 1或任何符合条件的内容作为局部变量。因此,使用OP的示例可能如下所示:

DECLARE @Var1 VARCHAR(200)
DECLARE @Var2 VARCHAR(200)
DECLARE @sprocResult TABLE(val1 INT, val2 INT)

INSERT INTO @sprocResult (val1, val2)
EXEC sp_someotherprocedure @id

SELECT TOP 1 
    @Var1 = val1,
    @Var2 = val2
FROM @sprocResult

存储过程的结果是什么意思?存储过程至少可以有三种不同的结果。