通过此SQL语句
- select * from tree
查看原始数据如下:
我们要想得到如下的一个树形查询结果如下图所示(包含 ROOT, LEVEL, IS_LEAF, PATH 四个字段):可执行如下SQL语句:
- select connect_by_root(child_col) root, level , decode(connect_by_isleaf,0,"No",1,"Yes") is_leaf, sys_connect_by_path(child_col,"/") path
- from tree
- start with parent_col is null connect by prior child_col=parent_col;
树形查询的重点在于 start
with ...
connect by prior .... 语句 以及 connect_by_root ,connect_by_isleaf,sys_connect_by_path这三个函数, decode是一般常用的函数。 其他参考:http://www.linuxidc.com/Linux/2012-05/60239p2.htm动态查询语句例子:
- declare
- n_rows number;
- v_sql_stmt varchar2(50);
- v_table_name varchar2(20);
- v_name varchar2(20);
- begin
- v_table_name := "tree";
- v_sql_stmt := "select count(*) from " || v_table_name || " where parent_col = :1";
- v_name := "asia";
- dbms_output.put_line(v_sql_stmt);
- execute immediate v_sql_stmt into n_rows using v_name;
- dbms_output.put_line("The number of rows of" || v_table_name || "is " || n_rows);
- end;
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12Linux下巧用my.cnf,mysql连接服务器不需要输入账号密码信息Oracle数据库教程:ORA-01031: 权限不足相关资讯 oracle数据库教程
- Oracle raw数据类型介绍 (01/29/2013 10:05:53)
- 监听器注册与ORA-12514 错误分析 (11/13/2012 14:30:08)
- Oracle SQL的cursor理解 (11/13/2012 14:16:17)
| - Oracle 如何强制刷新Buffer Cache (01/29/2013 10:02:46)
- dblink致Oracle库的SCN变成两库的 (11/13/2012 14:24:41)
- Linux操作系统下完全删除Oracle数 (11/13/2012 08:25:52)
|
本文评论 查看全部评论 (0)