在存储过程中实现递归操作在实际开发中是经常遇到的,象有继承关系的用户权限、组权限,功能菜单树等等。需要通过一个存储过程返回最终结果的时候就要用到了。对于返回结果为一个值的时候叫简单,返回结果为一个数据集的时候,我是用全局表来实现的。
1、返回一个值的情况:通过一out型参数返回值结果
2、返回数据集的情况:需要用两个存储过程,第一个存储过程(sp_A)供外部调用,它负责创建和删除全局临时表(##TempTableAB)调用第二个存储过程(sp_B),第二个存储过程实现递归并将操作结果保存到全局临时表。