如何阻止嵌套存储过程的结果出现在顶层?

How to stop results of nested stored procedure showing up at top level?

我对现有存储过程 (dbo.pr1) 进行了更改,以便它现在调用第二个存储过程 (dbo.pr2)。

这两个存储过程 return 数据都带有最终 SELECT 查询。

在 dbo.pr1 中,我现在添加了以下行:

EXEC @var1 = dbo.pr2

我这样做是为了将 dbo.pr2 中的值分配给变量 @var1(dbo.pr2 returns 一个位)。

但是,现在当我执行 dbo.pr1 时,我得到了两个结果,而不是预期的结果。我在 dbo.pr1 的末尾得到了 SELECT 查询结果,但我也从 dbo.pr2.

得到了 SELECT 查询结果

我无法更改 dbo.pr2,因为它正在系统的其他地方使用。有什么方法可以在我执行 dbo.pr1 时停止显示结果?

对调用方返回的内容进行处理,

SET NOCOUNT ON;

...


DECLARE @resultsOfPr2 TABLE
(
    ...
);

INSERT @resultsOfPr2
EXEC @var1 = [dbo].[pr2];

Fiddle here


注意: 我假设 [dbo].[pr2] 选择单个结果集。