2

我怎样才能按照以下方式做一些事情?

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

SET @Var1 = value1 from sp_someotherprocedure(@id)
SET @Var2 = value1 from sp_someotherprocedure(@id)
4

4 回答 4

2

我创建了一个简单的示例,如何从存储过程的结果中提取。为了将变量设置为存储过程的返回值,您需要将 OUTPUT 参数与存储过程一起使用,该参数将返回该值。

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
于 2013-05-03T21:04:38.477 回答
0

像这样:

EXEC @Var1 = sp_someotherprocedure(@id)
于 2013-05-03T20:56:43.683 回答
0

存储过程可以返回许多结果集。因此,它并不意味着与SELECT.
它们可以在您有OUTPUT 参数 的情况下使用 您应该查看Functions然后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')
于 2013-05-03T20:57:14.967 回答
0

我参加这个聚会已经很晚了,但我自己也遇到了这个问题。我和我的团队提出的解决方案是将 sproc 的结果执行到临时表中,然后选择前 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
于 2019-10-16T18:18:19.587 回答