2

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

我知道如何使用这个技巧来抑制 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(返回结果)

4

1 回答 1

1

首先,顺便说一句,SQL Server“Denali”为您提供了处理结果集的新选项。

在这种情况下,因为你在嵌套你显然不能使用插入/执行技巧。

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

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

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

于 2012-11-09T15:25:11.570 回答