- 16
- 0
- 约2.28万字
- 约 19页
- 2017-11-17 发布于河南
- 举报
DB2递归查询
当把应用程序从 Oracle 移植或迁移到 DB2 UDB for Linux、UNIX 和 Windows 时,递归查询成为一块巨大的绊脚石。能理解和使用 Oracle 型递归的开发人员,却常常无法自然而然地理解 DB2 中的递归,反过来也是一样。
乍一看来,这似乎是因为 DB2 是按照 SQL 标准中的定义并使用公共表表达式(CTE)和 UNION ALL 来实现递归的,而 Oracle 则使用 CONNECT BY 子句和一组所谓的伪列(pseudo column)及系统过程来定义递归。然而,两者之间的差别不仅在于语法方面。在底层,DB2 处理递归时采用的方法是逐层递归(广度优先),而 Oracle 采用的是深度优先的方法。后一种方法自然地产生与组织结构图(org chart)相匹配的输出。
在本文中,我使用一个实用的例子,这个例子将 CONNECT BY 和相关的伪列与 DB2 递归逐步进行匹配。
回页首
安装
为了执行一些查询,您必须下载和解压本文后面 下载 小节中提供的 CONNECT_BY.zip 文件。
如果您使用的是 32 位 Windows、32 位 Intel 上的 Linux 或 64 位 AIX? 系统,那么只需将 CONNECT_BY.zip 文件中适当子目录中的可执行文件 connect_by(在 Windows 上是 connect_by
原创力文档

文档评论(0)