`
lan13217
  • 浏览: 496300 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

oracle笔记 (procedure 递归构造树)

阅读更多
--树状结构存储
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); 




--构造哦树状结构(递归)
create or replace procedure p(v_id article.id%type, v_level binary_integer)
	is
	cursor c is select * from article where pid = v_id;
	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.cont);
		if (v_article.isleaf = 0) then
			p(v_article.id,v_level + 1);			
		end if;
	end loop;
end;
SQL> exec p(0,0)
蚂蚁大战大象
----大象被打趴下了
--------蚂蚁也不好过
--------瞎说
------------没有瞎说
--------大象进医院了
------------护士是蚂蚁
----怎么可能
--------怎么没有可能
--------可能性是很大的

create or replace procedure p(v_empno emp.empno%type,v_level binary_integer)
	is
	cursor c is select * from emp where mgr = v_empno;
	v_preStr varchar2(1024) := '';
begin
	for i in 1..v_level loop
		v_preStr := v_preStr || '----';
	end loop;
	for v_emp in c loop
		dbms_output.put_line( v_preStr || v_emp.ename );
		p(v_emp.empno,v_level+1);
	end loop;
end;
--树状结构存储
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); 




create or replace procedure p
	is
	 cursor c is
		select * from emp2 for update;
begin
	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); 
	commit;
end;

--构造哦树状结构
create or replace procedure p(v_id article.id%type, v_level binary_integer)
	is
	cursor c is select * from article where pid = v_id;
	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.cont);
		if (v_article.isleaf = 0) then
			p(v_article.id,v_level + 1);			
		end if;
	end loop;
end;
SQL> exec p(0,0)
蚂蚁大战大象
----大象被打趴下了
--------蚂蚁也不好过
--------瞎说
------------没有瞎说
--------大象进医院了
------------护士是蚂蚁
----怎么可能
--------怎么没有可能
--------可能性是很大的

create or replace procedure p(v_empno emp.empno%type,v_level binary_integer)
	is
	cursor c is select * from emp where mgr = v_empno;
	v_preStr varchar2(1024) := '';
begin
	for i in 1..v_level loop
		v_preStr := v_preStr || '----';
	end loop;
	for v_emp in c loop
		dbms_output.put_line( v_preStr || v_emp.ename );
		p(v_emp.empno,v_level+1);
	end loop;
end;
SQL> exec p(7839,0)
JONES
----SCOTT
--------ADAMS
----FORD
--------SMITH
BLAKE
----ALLEN
----WARD
----MARTIN
----TURNER
----JAMES
CLARK
----MILLER
分享到:
评论

相关推荐

    Oracle递归树形结构查询功能

    Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...

    树的递归构造算法 C语言

    在计算机科学中,树是一种非常重要的数据结构,广泛应用于各种算法和系统设计中。...递归构造树是一种高效且直观的方法,适用于理解二叉树和递归的概念。在实际编程中,理解并掌握这些技术对于提升编程能力至关重要。

    Java递归算法构造JSON树形结构

    Java 递归算法构造 JSON 树形结构 Java 递归算法构造 JSON 树形结构是指通过 Java 语言使用递归算法将数据库中的菜单表构建成树形的 JSON 格式发送给第三方。这种方法可以将复杂的树形结构数据转换成易于理解和处理...

    oracle递归、迭代

    ### Oracle中的递归查询详解 #### 一、引言 在数据库管理中,处理具有层次结构的数据是一项常见的任务。例如,在组织结构、产品分类或文件系统等场景中,经常需要查询这种类型的层级数据。Oracle数据库提供了强大...

    递归查询菜单树,支持mysql,oracle

    这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的数据库系统中的实现。 首先,我们要理解什么是递归查询。递归查询是一种在数据库中处理层次数据的方法,它通过自身...

    Oracle 递归函数介绍

    Oracle 递归函数是一种特殊的PL/SQL函数,可以用于解决复杂的树形结构查询问题。递归函数可以自我调用,以便遍历树形结构的每个节点,直到达到停止条件。 在 Oracle 中,递归函数的定义语法如下所示: ```sql ...

    oracle-递归查询地区名称

    oracle 递归调用 地区 ,用到的方法是 SYS_CONNECT_BY_PATH,可以扩展层级 名称

    递归动态树递归动态树

    递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树...

    Oracle递归SQL学习

    Oracle数据库中的递归SQL是一种强大的工具,用于处理层次结构数据,如组织结构、分类树或者层级关系等。在本主题中,我们将深入探讨如何利用递归SQL在Oracle中展示一棵树形结构,以及如何根据父ID遍历所有的子ID。 ...

    Oracle中的树状查询(递归查询)

    Oracle数据库系统在处理层次数据或树形结构时,提供了强大的工具——递归查询。递归查询允许我们在数据表中处理嵌套级别的数据,这在权限查询、组织结构、产品分类等场景中尤其常见。本文将深入探讨Oracle中的树状...

    递归画树(Qt实现)

    这个过程不仅展示了递归算法在处理树结构的强大能力,还体现了Qt在图形绘制方面的灵活性。通过适当调整节点间的距离、旋转角度或其他视觉效果,我们可以定制出更加美观和易于理解的树状图。在实际应用中,这种技术...

    用递归实现C#树形结构

    本篇将详细探讨如何使用递归方法来实现C#中的树形结构。 首先,理解树形结构的基本概念至关重要。在计算机科学中,树是由节点(也称为顶点)和边组成的非线性数据结构。每个节点可以有零个或多个子节点,而顶部的...

    递归和非递归建立树和树的前,中,后,分层遍历

    本主题将深入探讨如何使用递归和非递归方法来建立树,并实现前序、中序、后序以及分层遍历。 **一、递归与非递归建立树** 1. **递归建立树**:递归是一种自顶向下的解决问题的方法,它通过函数调用自身来实现。在...

    c#递归树自动树

    根据给定的信息,本文将详细解释C#中的递归树构建方法,并重点解析如何通过递归函数实现自动化的树形结构构建,包括添加父子节点等操作。 ### 一、递归树的概念 在计算机科学中,树是一种常用的数据结构,它由节点...

    Oracle递归查询

    为了更好地理解Oracle中的递归查询,我们首先需要创建一张表格来存储一个简单的树形结构。下面是一张名为`TEST_TREE`的表,包含以下列: - `ID`: 主键,标识每个节点。 - `PID`: 父节点ID,表示当前节点的上一级...

    js 递归json树实现根据子id查父id的方法分析

    本文实例讲述了js 递归json树实现根据子id查父id的方法。分享给大家供大家参考,具体如下: 最近做了一个类似用js实现思维导图的功能,作为思维导图,一定会有树状结构的数据产生,在操作里面的节点时会经常需要查找...

    递归形成树形结构.txt

    javascript递归形成树形结构

    递归分形树之动画实现

    递归分形树的实现是基于数学和编程技术,特别是递归算法的应用。递归是一种解决问题的方法,它通过将问题分解为更小的子问题来解决原问题。在分形树的上下文中,递归意味着每个树干会分成若干个更细的分支,这些分支...

    递归查询父子关系记录 oracle

    oracle 如何递归查询父子关系。经常用于构造树结构

Global site tag (gtag.js) - Google Analytics