在 PL/SQL 中创建某种类型的记录

发布于 2024-11-03 04:54:14 字数 342 浏览 6 评论 0原文

我正在尝试在 PL/SQL 中编写某种递归函数。

问题是:

假设表 A 有行:

 {B, C},
 {C, D},
 {C, F},
 {D, E},
 {E, F}

返回 B 直接和间接依赖的所有内容。

元组 {B, C} 意味着 B 依赖于 C,C 依赖于 D,依此类推。 当给定 B 时,该函数将返回一个游标或会产生以下结果的内容:{C, D, F, E} 请注意,简单的循环和仅打印值可能会产生重复的结果(在本例中为 E)。

我对 PL/SQL 相当陌生,我真的想不出一种方法来做到这一点。

预先感谢您的任何帮助!

I'm trying to write a recursive function of sorts in PL/SQL.

The problem is:

So say table A has rows:

 {B, C},
 {C, D},
 {C, F},
 {D, E},
 {E, F}

Return everything that B is dependent on, directly and indirectly.

The tuple {B, C} implies that B is dependent on C, C is dependent on D and so on and so forth.
This function, when given B, would return a cursor or something that would yield: {C, D, F, E}
Notice that simple looping through and just printing values may yield duplicate results (in this case, E).

I'm rather new to PL/SQL and I can't really think of a way to do this.

Thanks in advance for any help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Hello爱情风 2024-11-10 04:54:14

假设该表如下所示:

ID    PARENT_ID
---   ---------
B     C
C     D
C     F
D     E
E     F

为什么不使用分层查询,例如:

select distinct parent_id
  from (select parent_id
          from my_table
         start with ID = 'B'
               connect by nocycle id = prior parent_id
       )
 order by parent_id

此 SQL 未经测试,但它应该是正确方向的一个点;如果您需要的话,您的函数可以返回该光标,如果不需要,则返回一个值数组。

Assuming the table looks like this:

ID    PARENT_ID
---   ---------
B     C
C     D
C     F
D     E
E     F

Why wouldn't you use a hierarchical query like:

select distinct parent_id
  from (select parent_id
          from my_table
         start with ID = 'B'
               connect by nocycle id = prior parent_id
       )
 order by parent_id

This SQL's untested, but it should be a point in the right direction; your function could return that cursor if that's what you needed, or an array of values if not.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文