我怎样才能按照以下方式做一些事情?
DECLARE @Var1 VARCHAR(200)
DECLARE @Var2 VARCHAR(200)
SET @Var1 = value1 from sp_someotherprocedure(@id)
SET @Var2 = value1 from sp_someotherprocedure(@id)
我怎样才能按照以下方式做一些事情?
DECLARE @Var1 VARCHAR(200)
DECLARE @Var2 VARCHAR(200)
SET @Var1 = value1 from sp_someotherprocedure(@id)
SET @Var2 = value1 from sp_someotherprocedure(@id)
我创建了一个简单的示例,如何从存储过程的结果中提取。为了将变量设置为存储过程的返回值,您需要将 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
像这样:
EXEC @Var1 = sp_someotherprocedure(@id)
存储过程可以返回许多结果集。因此,它并不意味着与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')
我参加这个聚会已经很晚了,但我自己也遇到了这个问题。我和我的团队提出的解决方案是将 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