oracle中的代码在那里写,oracle中如何编写树级代码-数据库专栏,ORACLE
这是在2002年给一个制衣厂做系统的时候写的,请大家多批评指正!
create table dept(
departno varchar2(10),
departname varchar2(20),
topno varchar2(10));
insert into dept values(001,懂事会,0);
insert into dept values(002,总裁办,001);
insert into dept values(003,财务部,001);
insert into dept values(004,市场部,002);
insert into dept values(005,公关部,002);
insert into dept values(006,销售部,002);
insert into dept values(007,分销处,006);
insert into dept values(008,业务拓展处,004);
insert into dept values(009,销售科,007);
create table tempdept
(
tempdeptno char(4), /*部门编号*/
tempdeptname varchar2(20), /*部门名称*/
uppertempdeptno char(4), /*上级部门编号*/
uppertempdeptname varchar2(20), /*上级部门名称*/
tempdeptlevel number(4) /*部门所处的级别*/
);
select departname
from dept
connect by prior departno=topno
start with topno=0;
select a.departname top ,b.departname next
from dept a,dept b
where a.departno=b.topno;
select lpad(departno,level*2+length(departno),\)
from dept
start with topno=0
connect by prior departno=topno;
select departno,departname,level ||\|| topno
from dept
start with topno=0
connect by prior departno=topno;
select lpad(departno,level*2+length(departno), )
from dept
start with topno=0
connect by prior departno=topno;
select lpad(departno,level*3, )
from dept
start with topno=0
connect by prior departno=topno;
create or replace function getlevel(tempno varchar2)
return varchar2
is
result varchar2(20);
cursor curlevel(curtempno varchar2)
is
select departno
from dept
connect by prior departno = topno
start with topno = curtempno;
begin
open curlevel;
for v_sor in curlevel(tempno) loop
result:=result || / || v_sor.curtempno;
end loop;
return(result);
close curlevel;
dbms_output.put_line(success);
end getlevel;
rem************************************************************
rem********** 生成部门之间形成的树结构 ******************
rem********** 功能:输入部门后自动产生该部门 ******************
rem********** 及其子部门之间的树关系() ******************
rem********** 输入参数:部门编号paradeptid ******************
rem************************************************************
create or replace procedure getallsubdeptid(paradeptid varchar2)
is
deptno1 varchar2(4); /*存放部门编号*/
upperdeptno1 varchar2(4); /*存放该部门的上级部门编号*/
upperdeptno2 varchar2(4); /*存放查询同级上级部门编号*/
upperdeptno3 varchar2(4); /*存放查询的上级部门编号*/
level number; /*部门所处级别*/
dsql varchar2(100); /*动态sql字符串*/
cursor getdept is
select departno,topno
from dept
where departno != paradeptid;
begin
–dsql :=create table tempdept(tempdeptno,tempdeptname,uppertempdeptno,
–uppertempdeptname,tempdeptlevel);
–execute immediate dsql;
dsql :=truncate table tempdept;
dbms_output.put_line(0);
execute immediate dsql;
dbms_output.put_line(1);
insert into tempdept values(paradeptid,null,null,null,0);
dbms_output.put_line(2);
open getdept;
fetch getdept into deptno1,upperdeptno1;
while ( sqlcode = 0 )
loop
level := 1 ;
upperdeptno3 := upperdeptno1;
while ( upperdeptno1 is not null )
loop
if (upperdeptno1 = paradeptid) then
insert into tempdept values(deptno1,null,upperdeptno3,null,level);
exit;
else
upperdeptno2 := upperdeptno1;
select topno into upperdeptno1
from dept
where departno= upperdeptno2;
if upperdeptno2 != upperdeptno1
then
level := level+1;
end if;
end if;
end loop;
fetch getdept into deptno1,upperdeptno1;
end loop;
close getdept;
end;
/
oracle中的代码在那里写,oracle中如何编写树级代码-数据库专栏,ORACLE相关推荐
- redhat oracle环境变量配置文件,Redhat7.2(7.1)下oracle8.17的安装手册-数据库专栏,ORACLE...
redhat7.2(7.1)下oracle8.17的安装手册 一. 软件配置过程 1. 安装glibc 2.1包 glibc2.1版本(gnu c library,18m)下载地址: ftp://ft ...
- 基于java 工单管理_实训任务工单1-2(编写规范Java代码) 实训任务工单1-2(编写规范Java代码).docx_学小易找答案...
[其它]实训任务工单4-1(泛型类.泛型方法的应用) 实训任务工单4-1(泛型类.泛型方法的应用).docx [简答题]教学工单5-1Java序列化机制的使用 [填空题]The name of my ...
- rhel 7.3 安装 oracle,oracle8i在redhat7.1~7.3下的安装-数据库专栏,ORACLE
oracle 8i 在redhat 7.1~7.3下安装手册 以下以linux7.3为例 1.准备工作: 1).软件清单: compat-egcs-6.2-1.1.2.16.i386.rpm comp ...
- oracle pk_serial,Oracle 常用技巧和脚本-数据库专栏,ORACLE
作者:佚名 来源:internet 加入时间:2004-11-10 1. 如何查看oracle的隐含参数? oracle的显式参数,除了在init.ora文件中定义的外,在svrmgrl中用" ...
- html中单选多选怎么写,HTML中select标签单选多选用法详解
select 元素可创建单选或多选菜单.当提交表单时,浏览器会提交选定的项目,或者收集用逗号分隔的多个选项,将其合成一个单独的参数列表,并且在将 表单数据提交给服务器时包括 name 属性. 一.基本 ...
- 在html5中 空标签可以不写,HTML5中标签之间尽量不要加enter或者空格
HTM友,记基开前不接些前家我告对猿果水使钮控L5中如果标签之间随意使用换行或者空格可能会出现意向不朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到随到的bug. 具体实例: 写 ...
- java 编写代码_如果您在2016年编写过Java代码-这是您不容错过的趋势
java 编写代码 2016年最有趣的Java相关主题 关于代码,有很多热门话题,而要跟上所有事情,这是一项全职的工作. 如果您想知道如何从谷壳中分离出小麦,我们已经为您完成了工作. 在下面的文章中, ...
- java 代码 内存泄露_如何用Java编写一段代码引发内存泄露
Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有,好囧. A1:通过以下步骤可以很容易产生内存泄露(程序代码不能访问到某些对象,但是它们仍然保存在内存中) ...
- oracle命令清空数据库表,Oracle中如何快速删除数据字典管理的表空间-数据库专栏,ORACLE...
我的测试环境:hp rp7410主机,hp-unix11.11 os,oracle8.1.7.4的数据库,一个有90张表大约100g的测试表空间tbs_test. 问题的提出:oracle中在使用dr ...
- oracle数据库中的回收站,Oracle 10G 中的"回收站"-数据库专栏,ORACLE
oracle 10g 中的"回收站" by fenng http://www.dbanotes.net 在oracle 10g中,引入了一个回收站(recycle bin)的概念. ...
最新文章
- 输入引脚时钟约束_Happy Design in Vivado 系列:时序分析入门三板斧(一):创建时钟...
- Direct2D (25) : 将画笔线条所占用的区域转换为路径 - ID2D1Geometry.Widen()
- zookeeper启动失败排查
- 大数据,大格局,大发展
- HTTP协议容易犯的误区
- MySql查找几个字段的值一样的记录
- 当阳一中2021高考成绩查询,宜昌2021高考最高分多少分,宜昌历年高考状元资料
- 佳能hdr_烧设备无止境不代表随时败家,佳能EOS 5D4“闲鱼”翻身取代200D
- 性能优化篇(4):千万别使用CSS表达式
- matlab从哪里学,从零开始学MATLAB(附光盘)/从零开始学系列
- 2021第四届全国大学生IT技能大赛“传智杯”AK
- a5松下驱动器参数设置表_「精品干货」松下A5伺服驱动器参数设置与常见故障解决分析...
- iPhone上传全景照片到谷歌街景地图攻略
- 敌兵布阵——线段树单点修改区间查询
- 5种Windows网络模型之select模型
- 区块链技术如何赋能公共资源招采管理服务?
- 如何在 Unity3D 制作一杯水 LiquidVolume插件 水杯 烧瓶液体
- 完蛋!面试官问我 InnoDB 的物理存储结构!
- 喵喵机和咕咕机哪个好,打印效果大评测!喵喵机p2 VS咕咕机GT1
- LPR个人房贷利率如何计算?(商贷部分)
热门文章
- Java中如何使某个类的对象唯一性,只能创建一个对象
- html全屏代码怎么写,JS实现全屏的四种写法
- sqlserver 分割多个文件_鸿萌易备:SQL Server 数据库的全方位备份解决方案
- php redis 事务应用,redis事务有什么用
- python AttributeError: 'module' object has no attribute 'dumps'解决办法
- NYOJ 972 核桃的数量(蓝桥杯)
- dedecms设置端口号_织梦程序使用宝塔面板端口修改方法
- android 获取录音时长_Android中集成FFmpeg ③执行进度
- 自动驾驶 2-5 自动驾驶汽车的未来 The Future of Autonomous Vehicles
- 自动驾驶1-5: 感知要求Requirements for Perception