gpt4 book ai didi

plsql - PL-SQL递归函数

转载 作者:行者123 更新时间:2023-12-02 05:12:27 27 4
gpt4 key购买 nike

我是 PL SQL 的新手,我试图在其上创建一个递归函数,但我对 PL SQL 术语太困惑了。

我的表结构如下:

    FFAM_ACC_ID     FFAM_UPPER_ACC_ID   FFAM_GROUP_FLAG
1 0 1
2 1 1
3 1 2
4 2 1
5 4 2
6 1 2
7 6 2
8 0 1
9 8 2

现在,我想创建一个递归函数。因此,如果我提供一个 FFAM_ACC_ID,它应该能够返回我具有 FFAM_GROUP_FLAG 2 的子 ID。

FFAM_UPPER_ACC_ID 是父 ID,FFAM_GROUP_FLAG 确定该行是否是一个组。

因此,如果我提供 2,它应该不会返回任何内容,因为尽管它有一个子行 4。该行有 FFAM_GROUP_FLAG 1。即。是群。

如果我提供 1,它应该返回 3、6、7。这需要递归,因为 3 的父 ID 是 1,7 的父 ID 是 6。

如果我提供 9,它应该返回 9。虽然它没有子行,但它不是一个组。

SQL fiddle

最佳答案

您实际上不需要递归过程,甚至根本不需要过程:使用 hierarchical queries相反。

这应该做你想做的(至少对你提供的输入有效):

select * from FMS_FC_ACC_MST
where ffam_group_flag = 2
start with ffam_acc_id = <your input>
connect by ffam_group_flag = 2
and prior ffam_acc_id = ffam_upper_acc_id;

关于plsql - PL-SQL递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15195606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com