CONNECT_BY_ISCYCLE
2014-04-03 17:38
204 查看
select * from tb_cus_area_cde
--子取父
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_snr_area=a.c_area_cde START WITH a.c_area_cde='1040101'
--父取子
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_area_cde=a.c_snr_area START WITH a.c_snr_area is null
注意:在用这个函数的时候,statement的参数要用 ResultSet.TYPE_SCROLL_INSENSITIVE 而不能用 ResultSet.TYPE_SCROLL_SENSITIVE,在这里再把这两个之间的区别讲讲:
1.TYPE_FORWORD_ONLY,只可向前滚动;
2.TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
3.TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据
对于互为父子的情况,会出现死循环
这样
--子取父
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_snr_area=a.c_area_cde START WITH a.c_area_cde='1040101'
--父取子
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_area_cde=a.c_snr_area START WITH a.c_snr_area is null
注意:在用这个函数的时候,statement的参数要用 ResultSet.TYPE_SCROLL_INSENSITIVE 而不能用 ResultSet.TYPE_SCROLL_SENSITIVE,在这里再把这两个之间的区别讲讲:
1.TYPE_FORWORD_ONLY,只可向前滚动;
2.TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
3.TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据
对于互为父子的情况,会出现死循环
SELECT SYS_CONNECT_BY_PATH (EMPLOYEE,'/') as EMPLOYEE, MANAGER, CONNECT_BY_ISCYCLE FROM T CONNECT BY NOCYCLE PRIOR EMPLOYEE = MANAGER;
这样
相关文章推荐
- 10g树形查询特性CONNECT_BY_ISCYCLE的9i实现方式
- SYS_CONNECT_BY_PATH 和几个伪列CONNECT_BY_ROOT,CONNECT_BY_LEAF,CONNECT_BY_ISCYCLE
- Oracle中start with...connect by子句的用法
- Oracle: wmsys.wm_concat、sys_connect_by_path、自定义函数实现行列转换
- oracle中 connect by prior 递归算法收藏
- Oracle [sys_connect_by_path] 函数
- oracle start with connect by 用法-转
- SYS_CONNECT_BY_PATH函数用法 ORACLE
- oracle 中start with ... connect by prior 子句的用法
- 让hibernate支持递归、start with connect by prior 查询
- Operation CONNECT BY WITH FILTERING
- start with connect by prior 递归查询用法
- 树结构和它的专用函数SYS_CONNECT_BY_PATH
- connect by start with详细用法
- oracle中 connect by prior 递归算法
- oracle connect by level 的用法
- Oracle Connect By用法
- SYS_CONNECT_BY_PATH 函数
- 数据库异常---ORA-01436: 用户数据中的 CONNECT BY loop in user data 循环
- oracle 表中有子父关系列则使用CONNECT BY PRIOR