oracle 树状结构递归 PL/SQL输出控制 包括空格输出控制
树状结构
存储过程中通过递归构建,类似BBS回帖显示,代码共三段:
建表,插入数据,创建存储过程显示;
1.
create table article
(
id number primary key,
cont varchar2(4000),
pid number,
idleaf number(1), --0为非叶子节点,1为叶子节点
alevel number(2)
);
2.
insert into article values(1,'蚂蚁大战大象',0,0,0);
insert into article values(2,'大象被打趴下了',1,0,1);
insert into article values(3,'蚂蚁也不好过',1,0,1);
insert into article values(4,'瞎说',2,1,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);
3.
create or replace procedure tree(v_pid article.pid%type,v_alevel article.alevel%type)
is
cursor c is select * from article where pid=v_pid;
v_str varchar2(2048) :=' ';
begin
for i in 0..v_alevel loop
v_str :=v_str||' ';
end loop;
for v_article in c loop dbms_output.put_line(v_str||v_article.cont);
if (v_article.isleaf =0) then
tree(v_article.id,v_article.alevel);
end if;
end loop;
end;
结果前面的N*4个空格不显示:

设置空格输出后,问题解决:

其它问题:第一层的输出前不应该带空格,设置初始字符串为空,i从1开始。

设置 oracle sqlplus DBMS_OUTPUT.put_line
下面内容摘录自
http://blog.csdn.net/wbj1234566/article/details/2557515
1 设置DBMS_OUTPUT.put_line输出显示 SET SERVEROUTPUT ON
2 关闭DBMS_OUTPUT.put_line输出显示 SET SERVEROUTPUT OFF
3 设置DBMS_OUTPUT缓冲区大小 SET SERVEROUTPUT ON SIZE number(1000)
4 设置只显示DBMS_OUTPUT默认的长度 SET SERVEROUTPUT ON FORMAT TRUNCATED
5 设置空格的输出 SET SERVEROUTPUT ON FORMAT WRAPPED
6 取消空格的输出 SET SERVEROUTPUT ON FORMAT WORD_WRAPPED
oracle 树状结构递归 PL/SQL输出控制 包括空格输出控制的更多相关文章
- 浅谈oracle树状结构层级查询测试数据
浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...
- 浅谈oracle树状结构层级查询之start with ....connect by prior、level及order by
浅谈oracle树状结构层级查询 oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的,虽然我是一个java程序开发者,我一直觉得只 ...
- 树 List Leaves 【用数组模拟了树状结构建树+搜索叶子节点+按照特殊规律输出每个叶子节点】
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- oracle存储过程删除树状结构的表数据
今天在删除一个车辆品牌表的时候,遇到了一个问题,是在java的代码中做逻辑删除还是直接在Oracle中一次删除完成呢 思来想去觉得还是在sql里直接删除比较合适, 为什么呢? 第一,涉及数据库的读写操 ...
- lua 怎样输出树状结构的table?
为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据. ccmlog.lua local function __tostring(value, indent, vmap) local str ...
- 使用Map辅助拼装树状结构,消除递归调用
目前菜单或其他树状结构在数据库中的存储,多数是以一个parentid作为关联字段,以一维形式存储.使用时全部查询出来,然后在内存中拼装成树状结构.现在主要涉及的是拼装方法的问题. 一般可以进行 递归调 ...
- php递归实现一维数组转为指定树状结构 --- 省市区处理
### 这两天脑壳痛,一时短路,想不到准备利用递归实现这个需求,最后还是要请教同事,回来自己在实现了一遍,并记录下来 ### 原数据: // { // 广东省: { // 广州市: [ // &quo ...
- oracle 树状查询
做树状查询的时候,oracle有自己的优势,一条sql语句就可以搞定,而mysql这种数据库就只能用递归了... 递归的项目实例: //递归取到栏目路径 public List getTreeList ...
- 树状结构Java模型、层级关系Java模型、上下级关系Java模型与html页面展示
树状结构Java模型.层级关系Java模型.上下级关系Java模型与html页面展示 一.业务原型:公司的组织结构.传销关系网 二.数据库模型 很简单,创建 id 与 pid 关系即可.(pid:pa ...
随机推荐
- 创建jdk8基础镜像
https://blog.csdn.net/qq_35981283/article/details/80738451
- SignalR支持的平台
服务器系统要求 SignalR服务器组件可以托管在各种服务器配置上.本节介绍受支持的操作系统版本,.NET框架,Internet Information Server和其他组件. 支持的服务器操作系统 ...
- ADO.NET批量添加数据到SQL Server—BulkCopy使用指南
BulkCopy位于System.Data.SqlClient命名空间,允许你使用其他源的数据有效地批量加载 SQL Server 表. 属性: BatchSize :每个批处理中的行数. 在每个批处 ...
- JAVA—Filter
过滤器 Filter 1. Filter简介. filter 是对客户端访问资源的过滤,符合条件放行,不符合条件不放行, 并且可以对目标资源访问前后进行逻辑处理. 2. Filter 的API 详解. ...
- Java并发之ReentrantLock详解
一.入题 ReentrantLock是Java并发包中互斥锁,它有公平锁和非公平锁两种实现方式,以lock()为例,其使用方式为: ReentrantLock takeLock = new Reent ...
- java 实验4 异常
异常(实际使用直接try-catch) 1.常见系统异常 异常 异常的解释 ClassNotFoundException 未找到要装载的类 ArrayIndexOutOfBoundsException ...
- LOJ#2076. 「JSOI2016」炸弹攻击(模拟退火)
题面 传送门 题解 退火就好了 记得因为答案比较小,但是温度比较高,所以在算\(\exp\)的时候最好把相差的点数乘上一个常数来让选取更劣解的概率降低 话虽如此然而我自己打的退火答案永远是\(0\)- ...
- 记一次MBR锁机病毒分析
有一天,在机缘巧合之下我获得了一个锁机软件(是多巧合阿喂!),然后兴高采烈的把它拖入了虚拟机里蹂躏(>_<!). 很巧,软件有虚拟机检测... Emmmm好吧,随便过一下... 我用的虚拟 ...
- [转] YUM 源优先级插件:Yum Priorities
Linux 发行版比较多,同时还有很多个人或组织维护了某些特定用途的安装/升级源.Yum Priorities 插件可以用来强制保护源.它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 ...
- 5. STL编程五
1. STL的六大组件: 容器(Container) 算法(Algorithm) 迭带器(Iterator) 仿函数(Function object) 适配器(Adaptor) 空间配置器(alloc ...