从另一个存储过程中捕获/处理存储过程中的多个数据集

时间:2010-02-22 21:37:06

标签: sql sql-server stored-procedures

是否可以使用存储过程中返回的数据集?基本上我有一个存储过程(让它称之为SP_1),它调用另一个存储过程(让我们称之为SP_2)。 SP_2有5个左右的select语句。我想要做的是处理SP_1中的每个select语句。基本上是操纵数据或其他什么,但我不知道如何得到它。

让我展示一下我在做什么,这可能会让事情变得更清楚

CREATE PROCEDURE [dbo].[usp_1]
AS
exec usp_2
//How do I store the multiple select statements results in this stored proc?

1 个答案:

答案 0 :(得分:2)

为了工作,SP_2中的所有SELECT都需要返回相同数量的兼容列。如果一个返回2列,另一个返回5,另一个返回10,那么它将无效。

如果每个SELECT确实返回相同数量的列,并且数据类型是一致的那么你应该在SP_1中使用这种方法

CREATE TABLE #test (Col1 VARCHAR(10), Col2 VARCHAR(10))
INSERT #test
EXECUTE SP2 -- all resultsets return 2 VARCHAR columns
-- Now use #test which should contain all the combined results from SP2

但是,如果它们都返回不同的列,则无法执行此操作。你需要打破每个人选择它自己的sproc并独立调用每个。 SP2也会更改为调用这些子sprocs。