http://blog.csdn.net/wh62592855/article/details/4784130
start with ... connect by prior
该语句实现递归查询
select ... from <Table_Name>
where <Conditional-1>
start with <Conditional-2>
connect by prior <Conditional-3>
<Conditional-1>过滤参数,对查询返回结果的过滤
<Conditional-2>对根结点的限制语句,因为返回的结果可理解成一颗树
<Conditional-3>连接语句,prior是指上一条记录,如 connect by prior id = root_id 是指把上条记录的id作为本条记录的
root_id
扫描树结果表是,需要扫描每颗树的每个结点,一个节点只能访问一次,其访问步骤如下:
第一步:从根节点开始。
第二步:访问该节点。
第三步:判断该节点有无被访问的子节点,若有,则转向它最左侧的未被访问的子节点,并执行第二步,否则执行第四步。
第四步:若该节点为根节点,则访问完毕,执行第五步。
第五步:返回该节点的父节点,并访问第三步。
decode(<Conditional-1>,<value-1>,<result_value-1>,<value-2>,<result_value-2>,<value-3>,<result_value-3>
...default_result_value)
含义解释:decode(条件,值-1,返回值-1,值-2,返回值-2,值-3,返回值-3,默认返回值) row_name
该函数的含义也可如此表示:
if 条件==值-1 then
return 返回值-1
elseif 条件==值-2 then
return 返回值-2
elseif 条件==值-3 then
return 返回值-3
else
return 默认值
end if
分享到:
相关推荐
根据提供的文档信息,本文将详细解析Oracle数据库中的关键SQL语句分类、常用SQL语句以及Oracle函数的应用场景。此外,还将简要介绍Oracle数据库的一些基本管理命令,如启动与关闭服务、用户管理等。 ### 一、Oracle...
- **SELECT语句**:尽管基本语法相似,但Oracle支持特定的优化提示和集合运算符如START WITH和CONNECT BY,以及INTERSECT和MINUS,这些在Sql Server中需要通过其他方式实现,比如使用EXISTS和NOT EXISTS子句。...
HANA 和 Oracle 中的递归查询语句都是使用 start with…connect by prior 语句实现的。然而,HANA 中没有 level、siblings 关键字,无法像 Oracle 有额外扩展功能。 2. 竖转横查询 竖转横查询可以将竖向的数据转换...
Oracle数据库是一种关系型数据库管理系统(RDBMS),它使用SQL作为数据访问语言,并提供了强大的数据管理和安全性特性。 #### 三、表 表是数据库中的基本单元,由行和列组成。每一列称为一个字段或属性,每一行称为一...
Oracle数据库支持通过`CONNECT BY`和`START WITH`子句实现递归查询。递归查询通常用于处理层次结构数据,如组织结构、文件系统等。 ##### 2. WITH子句 WITH子句是Oracle SQL中的一个特性,它允许用户定义一个临时...
- 在Oracle和HANA中,都可以使用`START WITH...CONNECT BY PRIOR`来执行递归查询,以构建树形结构的数据集。例如,查询具有父子关系的部门结构。两者在语法上基本一致,但HANA不支持Oracle中的`level`和`siblings`...
从给定的文件信息中,我们可以提炼出一系列与Oracle SQL相关的高级知识点,这些知识点对于数据库开发者和维护者来说是极其宝贵的资源。以下是对各部分提到的SQL语句及其功能的详细解析: ### 1. 假数据插入:`...
根据提供的文件信息,我们可以归纳出一系列与Oracle数据库维护相关的SQL语句知识点。这些知识点主要涵盖了查询当前会话...这些SQL语句对于Oracle数据库管理员来说非常实用,可以帮助他们更好地管理和优化数据库性能。
10. 连接函数:如CONNECT_BY_ROOT和START_WITH,用于构建复杂的树状查询,处理层次结构数据。 11. 正则表达式函数:如REGEXP_LIKE和REGEXP_SUBSTR,提供了强大的文本匹配和提取功能,提高了数据处理的精度。 通过...
2. **层次查询**:使用CONNECT BY和START WITH进行层次结构查询。 #### 二、数据库管理 **1. Oracle的构件和组件** - **Oracle架构概述**:包括实例和数据库。 **2. 数据库的物理结构** 1. **控制文件**:存储...
- 注意点: Oracle使用 `START WITH` 和 `CONNECT BY` 进行层次查询,而DB2使用 `WITH RECURSIVE` 子句。 #### 9. 打印输出信息 - **Oracle** 和 **DB2** 都支持打印输出信息。 - Oracle示例: ```sql DBMS_...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其强大的功能和灵活性使得它在企业级应用中占据了重要地位。本资源是一份Oracle函数大全的手册,包含丰富的参考函数和速查信息,以CHM(Microsoft Compiled ...
学习并熟练掌握这些Oracle函数对于数据库查询和开发至关重要,它们可以帮助你编写更高效、更简洁的SQL语句。通过实践和实验,你可以更好地理解这些函数如何工作,并在实际项目中发挥它们的潜力。
Oracle PL/SQL是Oracle数据库中的过程化语言,它结合了SQL(Structured Query Language)和编程语言的特性,用于创建...通过实践这些语句,可以更好地理解Oracle数据库的工作原理,并能更有效地进行数据处理和管理。
#### 十二、Decode语句 **Oracle:** ```sql DECODE(col, 'value1', val1, 'value2', val2, def_val) ``` **DB2:** ```sql CASE WHEN col = 'value1' THEN val1 WHEN col = 'value2' THEN val2 ELSE def_val ...
- 创建序列:`CREATE SEQUENCE seq_x [START WITH n] [INCREMENT BY n];` - 使用序列:`NEXTVAL`获取下一个值;`CURRVAL`获取当前值。 3. **视图(View)**:虚拟表,基于一个或多个实际表或视图。 - 创建视图:...
- **规范要求**:在PL/SQL中应避免使用GOTO或RETURN语句,因为它们可能会导致代码难以理解和维护。 - **示例**: ```plsql DECLARE v_age NUMBER; BEGIN v_age := 25; IF v_age > 18 THEN -- 处理成年人逻辑...
例如,`CREATE SEQUENCE EmployeeID_SEQ START WITH 1 INCREMENT BY 1`。 3. **CREATE VIEW语句**:创建视图,它是基于一个或多个表的逻辑数据表,可以包含复杂的SELECT语句。例如,`CREATE VIEW High_Salaried_...
### Oracle中关于死锁的处理 #### 死锁概述 在Oracle数据库中,死锁是一种常见但必须妥善处理的问题。当两个或多个事务互相等待对方释放资源时就会发生死锁。这种情况下,没有一个事务能够继续执行,直到系统采取...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数是其核心优势之一。本文将基于"Oracle常用函数 CHM"这个资源,详细解析一些Oracle数据库中常见的函数及其应用,帮助你更好地理解和...