(SQL)如何从多个执行的存储过程返回结果集?

(SQL)如何从多个执行的存储过程返回结果集?,sql,stored-procedures,Sql,Stored Procedures,好的,我有一个关于从多个存储过程返回记录集的问题 如果我有一个执行此操作的存储过程: exec sproc1 exec sproc2 exec sproc3 每个存储过程只返回一个数字,因此它返回 [没有列名] 一千五百 [没有列名] 18000 [没有列名] 1253 显然,数据阅读器将无法处理这个问题,或者至少我认为它不会。所以我考虑声明一个表变量 DECLARE @Table (Col1, Col2) INSERT INTO @Table exec sproc1,exec sproc2

好的,我有一个关于从多个存储过程返回记录集的问题

如果我有一个执行此操作的存储过程:

exec sproc1
exec sproc2
exec sproc3
每个存储过程只返回一个数字,因此它返回

[没有列名] 一千五百

[没有列名] 18000

[没有列名] 1253

显然,数据阅读器将无法处理这个问题,或者至少我认为它不会。所以我考虑声明一个表变量

DECLARE @Table (Col1, Col2)

INSERT INTO @Table
exec sproc1,exec sproc2, etc...)
但这不起作用


关于如何处理这个问题,你有什么想法吗?

将你的插入内容分散到几个语句中:

DECLARE @t TABLE (Value int);

INSERT INTO @t
EXEC sproc1;

INSERT INTO @t
EXEC sproc2;

INSERT INTO @t
EXEC sproc3;

SELECT Value FROM @t;
编辑

等等。。。您是说您已经有了一个返回多个结果集的存储过程吗?数据阅读器绝对可以处理这个问题。只需使用该方法告诉读者您现在需要来自下一个结果集的数据

编辑2

你问是否有办法将所有结果汇总成一行。我可以想出一种方法来做到这一点,但它肯定不漂亮,而且我相信我会在评论中受到更多精通SQL的用户的批评,但下面是:

DECLARE @t TABLE (Id int identity, Value int);

INSERT INTO @t (Value)
EXEC sproc1;

INSERT INTO @t (Value)
EXEC sproc2;

INSERT INTO @t (Value)
EXEC sproc3;

SELECT Value FROM @t
PIVOT ( AVG(Value) FOR Id IN ([1], [2], [3]) ) AS t;
这样就可以将三个值作为单独的行插入,然后以Id值为轴创建一个包含三列的单行。

在一行中?多个结果集?我想您可以在@t中添加一个标识列,并以它为轴心,将这些列转换为行或其他内容。