oracle 遍历树
oracle 怎么来遍历一个树,相比较其他方法,oracle的connect语法更能很便利的解决问题。
语法格式:
select ...
from ...
start with...
connect by prior expr=expr
order siblings by ..
start with 的功能类似于where,指明从哪个分支开始便利;
connect by 指明父节点和子节点地连接方式,关键字prior放在父节点之前;
order siblings by代表对同一层的节点进行排序方法。
例子:
select * from direct
start with parentid is null
connect by prior parentid = id;
结果:
id name parentid
1 oracle null
2 assistants 1
3 bin 1
4 RDBMS 1
5 ADMIN 4
6 catcr.sql 5
7 catawrvw.sql 5
如果想看树的层次结构,可用oracle提供LEVEL伪列
方法如下:
select level,lpad(' ',level * 2 -1)|| '|' || name name
from direct
start with parentid is null
connect by prior id = parentid;
使用SYS_CONNECT_BY_PATH,取得之前的路径信息
select id,SYS_CONNECT_BY_PATH(name,'/') name
from direct
start with parentid is null
connect by prior id = parentid;
相关文档:
一 概念
游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。
二&n ......
需要权限:
grant references on test_sys to user_1;
or
grant all on test_sys to user_1;
测试:
sys用户下:
SQL> create user user_1 identified by user_1;
用户已创建。
SQL> grant dba to user_1;
授权成功。
SQL> create table test_sys(pk_col varchar2(5))
2&nbs ......
author:skatetime:2010-05-04
在我们的系统里,大家在写pl/sql时,处理多条记录时,几乎都是通过游标来完成的,这样是非常影响性能的。我们可以用批量绑定可以大大的改善。
批量绑定是oracle9i增加的特性,是指执行单次sql操作能传递所有集合元素的数据。通过绑定绑定变量可以极大的提高数据处理速度,提高应用程 ......