以前用SQL实现的机构职能树,再看看
DECLARE
CNT NUMBER;
TMP VARCHAR2(20);
vtmp VARCHAR2(22);
ltmp1 VARCHAR2(1000);
ltmp2 VARCHAR2(22);
ltmp3 VARCHAR2(22);
ltmp4 VARCHAR2(22);
NTMP NUMBER;
CURSOR CSR_TEST IS
SELECT O.SWJG_BM, O.SJ_SWJG_BM
FROM DB_NEU.T_XT_ORG O
WHERE O.SWJG_BM NOT IN (SELECT T.SWJG_BM FROM DB_NEU.T_XT_SWJG_ZN T);
R_TEST CSR_TEST%ROWTYPE; BEGIN
SELECT COUNT(*)
INTO CNT
FROM DB_NEU.T_XT_ORG O
WHERE O.SWJG_BM NOT IN (SELECT T.SWJG_BM FROM DB_NEU.T_XT_SWJG_ZN T);
DBMS_OUTPUT.PUT_LINE(CNT);
OPEN CSR_TEST;
FETCH CSR_TEST
INTO R_TEST;
tmp:=r_test.swjg_bm; /*保存当前需要处理的机关*/
WHILE CNT > 0 LOOP
/*DBMS_OUTPUT.PUT_LINE( r_test.swjg_bm);*/
SELECT COUNT(*)
INTO NTMP
FROM DB_NEU.T_XT_SWJG_ZN T
WHERE T.SWJG_BM = R_TEST.SJ_SWJG_BM;
DBMS_OUTPUT.PUT_LINE('ntmp:' || NTMP);
WHILE NTMP <> 1 LOOP /*父亲节点没在职能表中,那么需要取父亲的父亲*/
DBMS_OUTPUT.PUT_LINE('cnt' || CNT);
SELECT NVL(O.SJ_SWJG_BM, O.SWJG_BM) /*顶级的话就取自己*/
INTO TMP
FROM T_XT_ORG O
WHERE O.SWJG_BM = R_TEST.SJ_SWJG_BM;
SELECT COUNT(*)
INTO NTMP
FROM DB_NEU.T_XT_SWJG_ZN T
WHERE T.SWJG_BM = tmp;
END LOOP;
/*DBMS_OUTPUT.PUT_LINE('cnt++' || CNT);*/
DBMS_OUTPUT.PUT_LINE('swjg_bm:' || tmp);
/*实际处理的代码begin*/
vtmp:=CHR(39)||tmp||CHR(39);
dbms_output.put_line('vtmp:'||vtmp);
SELECT /*O.SWJG_BM, O.SJ_SWJG_BM,*/ TTT.CC INTO ltmp1 /*, '00' AS ZN_DM*/
FROM T_XT_ORG O,
(SELECT CASE
WHEN TT.SWJG_BM =
(SELECT SWJG_BM
FROM (WITH TMP AS (SELECT O.*,
LEVEL LEV,
CONNECT_BY_ISLEAF LEAF
FROM T_XT_ORG O
START WITH O.SWJG_BM =
(SELECT SJ_SWJG_BM
FROM T_XT_ORG TA
WHERE TA.SWJG_BM =
vtmp)
CONNECT BY PRIOR
O.SWJG_BM = O.SJ_SWJG_BM)
SELECT * FROM TMP WHERE LEV = 1)
) THEN
CONCAT(CC, CHR(49))
WHEN LASTCODE < 56 THEN
CONCAT(SRC, CHR(LASTCODE + 1))
WHEN LASTCODE = 56 OR LASTCODE < 89 THEN
CONCAT(SRC, CHR(LASTCODE + 1))
WHEN LASTCODE = 89 OR LASTCODE < 121 THEN
CONCAT(SRC, CHR(LASTCODE + 1))
END CC,
vtmp AS SWJG
FROM (SELECT T.CC,
T.SWJG_BM,
SUBSTR(T.CC, -LENGTH(T.CC), LENGTH(T.CC) - 1) SRC,
ASCII(SUBSTR(T.CC, -1)) LASTCODE
FROM DB_NEU.T_XT_SWJG_ZN T
WHERE T.CC =
(SELECT MAX(ZZ.CC)
FROM DB_NEU.T_XT_SWJG_ZN ZZ
WHERE ZZ.SWJG_BM IN
(SELECT SWJG_BM
FROM (WITH TMP AS (SELECT O.*,
LEVEL LEV,
CONNECT_BY_ISLEAF LEAF
FROM T_XT_ORG O
START WITH O.SWJG_BM =
(SELECT SJ_SWJG_BM
FROM T_XT_ORG TA
WHERE TA.SWJG_BM =
vtmp)
CONNECT BY PRIOR O.SWJG_BM =
O.SJ_SWJG_BM)
SELECT *
FROM TMP
WHERE LEV =
(SELECT LEV
FROM TMP T
WHERE T.SWJG_BM = vtmp)
/*AND LEAF = 1*/
ORDER BY SWJG_BM ASC) TT
WHERE TT.SWJG_BM NOT IN (vtmp)
/***查出直系父亲**/
UNION ALL
SELECT SWJG_BM
FROM (WITH TMP AS (SELECT O.*,
LEVEL LEV,
CONNECT_BY_ISLEAF LEAF
FROM T_XT_ORG O
START WITH O.SWJG_BM =
(SELECT SJ_SWJG_BM
FROM T_XT_ORG TA
WHERE TA.SWJG_BM =
vtmp)
CONNECT BY PRIOR
O.SWJG_BM =
O.SJ_SWJG_BM)
SELECT *
FROM TMP
WHERE LEV = 1) ))) TT) TTT
WHERE O.SWJG_BM = TTT.SWJG;
/*end*/
/* dbms_output.putline('ltmp1:'||ltmp1||'ltmp2:'||ltmp2||'ltmp3:'||ltmp3||'ltmp4:'||ltmp4);*/
dbms_output.put_line('ltmp1:'||ltmp1);
CNT := CNT - 1;
/*END IF;*/
FETCH CSR_TEST
INTO R_TEST;
tmp:=r_test.swjg_bm;
END LOOP;
CLOSE CSR_TEST;
END;
以前用SQL实现的机构职能树,再看看的更多相关文章
- SQL优化 MySQL版 - B树索引详讲
SQL优化 MySQL版 - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太 ...
- SQL学习笔记之B+树
0x00 概述 要描述清楚B+树,得先了解二叉查找数,平衡二叉树. 0x01 二叉查找树 任意节点,它的左子树如果不为空,那么左子树上所有节点的值都小于根节点的值:任意节点,他的右子树如果不为空,那么 ...
- SQL学习笔记之B+树的几点总结
本文主要以列表形式将B+树的特点以及注意点等列出来,主要参考<算法导论>.维基百科.各大博客的内容,结合自己的理解写的,如内容有不当之处,请各位雅正. 0x00 前言 B树是为磁盘或其他直 ...
- linq to sql 动态构建查询表达式树
通过Expression类进行动态构造lamda表达式. 实现了以下几种类型,好了代码说话: public Expression<Func<T, bool>> GetAndLa ...
- SQL - 获取多机构最近相同节点
-- Create Branches Table create table Branches ( BranchCode ) ,BranchName ) ,L0BCode ) ,L1BCode ) ,L ...
- LSM树——放弃读能力换取写能力,将多次修改放在内存中形成有序树再统一写入磁盘
LSM树(Log-Structured Merge Tree)存储引擎 代表数据库:nessDB.leveldb.hbase等 核心思想的核心就是放弃部分读能力,换取写入的最大化能力.LSM Tree ...
- Splay树再学习
队友最近可能在学Splay,然后让我敲下HDU1754的题,其实是很裸的一个线段树,不过用下Splay也无妨,他说他双旋超时,单旋过了,所以我就敲来看下.但是之前写的那个Splay越发的觉得不能看,所 ...
- hdu 1394 Minimum Inversion Number(这道题改日我要用线段树再做一次哟~)
Problem Description The inversion number of a given number sequence a1, a2, ..., an is the number of ...
- 查询获取所有数据库名及数据库中表的集合、数据库连接字符串(类生成器,暂时支持mysql,sql server,后期有oracle再更新)
现所在公司做项目开发时,经常会自己创建model类,网上的生成器也很多,完全满足自己的不太现实,所以感觉自己做一个更有底气,主要针对过程中的一些语句进行整理,也供其他人学习参考. 连接字符串: mys ...
随机推荐
- Azure SQL Data Warehouse
Azure SQL Data Warehouse & AWS Redshift Amazon Redshift Amazon Redshift 是一种快速.完全托管的 PB 级数据仓库,可方便 ...
- 理解javascript this指向
匿名函数中的this指向window对象 这句话很经典: 每个函数在调用时,其活动对象都会自动获取两个特殊的变量:this和arguments.内部函数在搜索这两个变量时,只会搜到其活动对象为止,因此 ...
- python 下 tinker、matplotlib 混合编程示例一个
该例是实现了 Tinker 嵌入 matplotlib 所绘制的蜡烛图(k 线),数据是从 csv 读入的.花一下午做的,还很粗糙,仅供参考.python 代码如下: import matplotli ...
- Django简单的数据库操作
当然,本篇的前提是你已经配置好了相关的环境,这里就不详细介绍. 一. 在settings.py文件中设置数据库属性. 如下: DATABASES = { 'default': { 'ENGINE': ...
- 一、基于hadoop的nginx访问日志分析---解析日志篇
前一阵子,搭建了ELK日志分析平台,用着挺爽的,再也不用给开发拉各种日志,节省了很多时间. 这篇博文是介绍用python代码实现日志分析的,用MRJob实现hadoop上的mapreduce,可以直接 ...
- MYSQL开启慢查询日志实施
查看当前服务器是否开启慢查询:1.快速办法,运行sql语句show VARIABLES like "%slow%" 2.直接去my.conf中查看.my.conf中的配置(放在[m ...
- .Net 中的反射(序章) - Part.1
引言 反射是.Net提供给我们的一件强力武器,尽管大多数情况下我们不常用到反射,尽管我们可能也不需要精通它,但对反射的使用作以初步了解在日后的开发中或许会有所帮助. 反射是一个庞大的话题,牵扯到的知识 ...
- flask初探
为什么我们需要模板 让我们来考虑下我们该如何扩充我们这个小的应用程序. 我们希望我们的微博应用程序的主页上有一个欢迎登录用户的标题,这是这种类型的应用程序的一个"标配".忽略本应用 ...
- 深入理解javascript原型和闭包(9)——简述【执行上下文】下
继续上一篇文章(http://www.cnblogs.com/wangfupeng1988/p/3986420.html)的内容. 上一篇我们讲到在全局环境下的代码段中,执行上下文环境中有如何数据: ...
- 深入理解javascript原型和闭包(16)——完结
之前一共用15篇文章,把javascript的原型和闭包. 首先,javascript本来就“不容易学”.不是说它有多难,而是学习它的人,往往都是在学会了其他语言之后,又学javascript.有其他 ...