18-Oracle学习_存储过程-递归-树状结构的存储与展示
来源:互联网 发布:宇宙探索 知乎 编辑:程序博客网 时间:2024/04/30 15:55
一, 表
create table article( id number primary key, cont varchar2(4000), pid number, isleaf number(1), -- 0, 叶子结点; 1, 非叶子结点 alevel number(2));
二, 数据
insert into article values(1, '蚂蚁大战大象', 0, 0, 0);insert into article values(2, '大象被打趴下了', 1, 0, 1);insert into article values(3, '蚂蚁也不好过', 2, 1, 2);insert into article values(4, '瞎说', 2, 0, 2);insert into article values(5, '没有瞎说', 4, 1, 3);insert into article values(6, '怎么可能', 1, 0, 1);insert into article values(7, '怎么没有可能', 6, 1, 2);insert into article values(8, '可能性是很大的', 6, 1, 2);insert into article values(9, '大象进医院了', 2, 0, 2);insert into article values(10, '护士是蚂蚁', 9, 1, 3);
三, 树状结构
1-蚂蚁大战大象2-大象被打趴下了 => 1
3-大象被打趴下了 => 2
4-瞎说 => 2
5-没有瞎说 => 4
9-大象进医院了 => 2
10-护士是蚂蚁 => 9
6-怎么可能 => 1
7-怎么没有可能 => 6
8-可能性是很大的 => 6
四, 使用存储过程 展示
1, 创建create or replace procedure p (v_pid article.pid%type, v_level binary_integer)is cursor c is select * from article where pid = v_pid; v_preStr varchar2(1024) := '';begin -- 缩进 for i in 1..v_level loop v_preStr := v_preStr || '* '; end loop; for v_article in c loop dbms_output.put_line(v_preStr || v_article.id || '-' || v_article.cont || '=>' || v_article.pid); -- 如果不是叶子结点, 则递归 if (v_article.isleaf = 0) then p (v_article.id, v_level + 1); end if; end loop;end;
2, 执行
SQL> exec p(0,0);1-蚂蚁大战大象=>0* 2-大象被打趴下了=>1* * 3-蚂蚁也不好过=>2* * 4-瞎说=>2* * * 5-没有瞎说=>4* * 9-大象进医院了=>2* * * 10-护士是蚂蚁=>9* 6-怎么可能=>1* * 7-怎么没有可能=>6* * 8-可能性是很大的=>6
3, 注意
oracle中开头的空格会被忽略
- 18-Oracle学习_存储过程-递归-树状结构的存储与展示
- oracle之树状结构的存储与展示(递归查询)
- --树状结构存储与展示
- Oracle-第十三讲,,树状结构的存储于展示
- MySQL使用递归存储过程实现树状结构,实现Oracle的Connect By 功能
- Oracle数据库 树状结构的存储与展现
- MySQL使用递归存储过程实现树状结构,实现Oracle的Connect By 功能在Mysql中如何实现Oracle中的递归
- oracle学习笔记 存储结构_文件
- 15-Oracle学习_存储过程
- ORACLE表结构与存储过程导出
- oracle存储过程语法与结构
- oracle存储过程的递归调用
- oracle存储过程的递归调用
- oracle 存储过程的学习
- oracle 存储过程的学习
- oracle存储过程的学习
- Oracle 存储过程的学习
- Oracle存储结构_文件
- 17-Oracle学习_触发器
- 黑马程序员_对象
- Ubuntu下编译Linux内核和hello模块
- gridview列显示,截取其中前面的几个字显示出来,当鼠标放上去的时候显示全部
- 数据结构与程序设计Chapter 1 编程原则总结
- 18-Oracle学习_存储过程-递归-树状结构的存储与展示
- 黑马程序员_String类介绍
- C# LinkButton 带参数的OnCommand事件的写法
- 题目1214:丑数
- Visual Studio原生开发的10个调试技巧
- poj 1423
- A. Mahjong
- vim 中Ctags的安装和使用
- Object-C学习(九):浅复制与深复制