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

时间:2015-01-19 15:41:55

标签: sql sql-server tsql

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

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

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

EXEC @var1 = dbo.pr2

我已经完成了这项工作,以便将dbo.pr2中的值分配给变量@ var1(dbo.pr2返回单个位)。

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

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

1 个答案:

答案 0 :(得分:3)

对调用者返回的内容执行某些操作,

SET NOCOUNT ON;

...


DECLARE @resultsOfPr2 TABLE
(
    ...
);

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

Fiddle here


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