我希望通过存储过程获得员工最高的老板:
现在我有一个程序可以带来这样的直接老板:
hm_get_my_direct_boss(emp_num).
如果我有emp_num = 56
如果我调用程序hm_get_my_direct_boss(56)
。
它会返回678
(直接老板)。
然后,如果我再次调用它hm_get_my_direct_boss(678)
,它将返回892
如果我第三次将其称为hm_get_my_direct_boss(892)
,则会返回0
这意味着892
是56
的最高老板。
我想用foreach loop in informix
执行此操作并在0之前返回最后一个如何执行此操作?
答案 0 :(得分:0)
将存储过程hm_get_my_direct_boss
更改为以下内容:
声明一个变量来存储当前boss的ID。说Current_Boss_ID
如果直接boss 不 0,则调用hm_get_my_direct_boss(Current_Boss_ID)
。
如果直接boss IS 0,RETURN
为Current_Boss_ID。
RETURN
允许您将控制流返回到第一个调用proc。
但是,处理这类场景的更有效和更清晰的方法是使用recursive CTE。