如何抑制多个存储过程的结果

时间:2012-07-06 14:08:08

标签: sql sql-server-2008 suppress

我有一个存储过程sp_1,它调用另一个存储过程sp_1_1。

我知道如何使用this trick来抑制sp_1_1的结果。

真正的问题是sp_1_1本身也会调用另一个存储过程sp_1_1_1,它也会将结果返回到sp_1_1 !!

我可能无法更改sp_1_1或sp_1_1_1,并且只能更改sp_1。

返回sp_1的结果是2个记录集,第一个来自sp_1_1,第二个来自sp_1_1_1。

摘要:

sp_1(需要抑制从下面返回的两个记录集)

+ ---- sp_1_1(返回自己的结果,然后从下面得到结果)

+ ---------- sp_1_1_1(返回结果)

1 个答案:

答案 0 :(得分:1)

首先,除此之外,SQL Server“Denali”为您提供了处理结果集的新选项。

在这种情况下,因为你正在嵌套你显然不能使用insert / exec技巧。

如果你不想重构太多,一个kludgy解决方法是使用默认值向proc添加一个参数,例如@SuppressResults bit = false。

然后,在需要嵌套的例程中,使用@ SuppressResult = True显式调用它,然后更改例程中的代码,如果@ SuppressResults = True则不选择结果。

重要的是提供默认值并将参数放在最后。这将阻止代码库中其他地方对例程的现有调用需要更改。