【发布时间】:2021-03-11 15:04:49
【问题描述】:
亲爱的,我有一个名为“PROGRAM”的源表,如下所示
Program CSECT
X Y
B X
M P
A L
B D
C D
A C
B C
A B
D B
给定一个程序,例如“A”,我需要找到所有关联的 CSECT
Program CSECT
A L
A C
A B
B D
B X
X Y
我尝试过如下递归查询,但它会循环循环引用示例 B-D 和 D-B
WITH RPL (Program, Csect) AS
(SELECT ROOT.Program, ROOT.Csect
FROM Program ROOT
WHERE Program = 'A'
UNION ALL
SELECT CHILD.Program, CHILD.Csect
FROM RPL PARENT, Program CHILD
WHERE PARENT.Csect = CHILD.Program)
SELECT *
FROM RPL;
【问题讨论】:
-
添加一个计数器和一个停止条件以避免无限循环。您还可以使用一些功能来检查一个值是否已经在您的方式中,尽管您的数据作为停止条件。