我想通过存储过程为员工找到最高的老板:
现在我有一个程序,可以让直接老板这样:
hm_get_my_direct_boss(emp_num).
如果我有emp_num = 56
如果我调用过程CCD_ 2。它将返回CCD_ 3(直接老板)。
那么如果我再次调用它hm_get_my_direct_boss(678)
,它将返回892
如果我第三次调用它hm_get_my_direct_boss(892)
,它将返回0
这意味着CCD_ 8是CCD_。
我想用foreach loop in informix
做这件事,并返回0之前的最后一个,怎么做?
将存储过程hm_get_my_direct_boss
更改为以下内容:
声明一个变量来存储当前老板的ID。比如current_boss_ID
如果直接上级不是0,则调用hm_get_my_direct_boss(Current_Boss_ID)
。
如果直接bossIS为0,则RETURN
为Current_boss_ID。
RETURN
允许您将控制流返回到第一个调用进程。
但是,处理这类场景的更高效、更干净的方法是使用递归CTE。