如何在程序中预先处理并在特定条件下返回值?

时间:2015-02-24 11:12:53

标签: sql loops stored-procedures recursion informix

我希望通过存储过程获得员工最高的老板:

现在我有一个程序可以带来这样的直接老板:

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

这意味着89256的最高老板。

我想用foreach loop in informix执行此操作并在0之前返回最后一个如何执行此操作?

1 个答案:

答案 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