我有一个存储过程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(返回结果)
答案 0 :(得分:1)
首先,除此之外,SQL Server“Denali”为您提供了处理结果集的新选项。
在这种情况下,因为你正在嵌套你显然不能使用insert / exec技巧。
如果你不想重构太多,一个kludgy解决方法是使用默认值向proc添加一个参数,例如@SuppressResults bit = false。
然后,在需要嵌套的例程中,使用@ SuppressResult = True显式调用它,然后更改例程中的代码,如果@ SuppressResults = True则不选择结果。
重要的是提供默认值并将参数放在最后。这将阻止代码库中其他地方对例程的现有调用需要更改。