-- 功能:课程体系树
-- 参数: 租户ID,权限类型 (T代表租户,G 代表管理员)
-- 作者: xxxxx
CREATE PROCEDURE `PRO_COURSE_STRUCTURE` (IN vTenantId VARCHAR(36), IN vPROTYPE CHAR(1))
BEGIN
-- 数量
DECLARE i int;
-- 统计多少条记录
DECLARE vCount INT;
-- 岗位Id
DECLARE vPositionId VARCHAR(36);
-- 技能Id
DECLARE vSkillId VARCHAR(36);
-- 中间转换值
DECLARE MedianId VARCHAR(36);
-- 创建临时表
CREATE TEMPORARY TABLE tmp_CourseStructure
(
ID VARCHAR(36) NOT NULL, NAME VARCHAR(50) NOT NULL,
PARENTID VARCHAR(36)
);
-- 获取岗位信息树
BEGIN
SET vCount=(SELECT COUNT(1) FROM oep.position);
-- 创建岗位临时表
CREATE TEMPORARY TABLE IF NOT EXISTS TmpPosition ENGINE = MEMORY
SELECT p.PositionId,p.PositionName,
p.PositionParentId,p.TenantId
,@curRow := @curRow + 1 AS row_number
FROM oep.position p
JOIN (SELECT @curRow := 0) r;
-- 循环获取岗位
SET i=1;
loop1: WHILE i<=vCount DO
-- 获取某条记录信息
SET vPositionId= (SELECT PositionId FROM TmpPosition WHERE row_number =i);
-- 当岗位ID不为NULL
IF vPositionId IS NOT NULL
THEN
SET MedianId= vPositionId;
SET vPositionId= (SELECT GetPositionInfo(vPositionId));
-- 当为最末级时
IF vPositionId IS NOT NULL AND vPositionId = '00000000-0000-0000-0000-000000000000'
THEN
INSERT INTO tmp_CourseStructure (ID,NAME,PARENTID)
SELECT PositionId AS ID, PositionName AS NAME,PositionParentId AS PARENTID FROM TmpPosition
WHERE PositionId =vPositionId;
ELSE
INSERT INTO tmp_CourseStructure (ID,NAME,PARENTID)
SELECT PositionId AS ID, PositionName AS NAME,PositionParentId AS PARENTID FROM TmpPosition
WHERE PositionId =MedianId;
END IF;
END IF;
SET i=i+1;
END WHILE loop1;
-- 删除临时岗位表
DROP TEMPORARY TABLE IF EXISTS TmpPosition;
END;
-- 获取技能信息树
BEGIN
SET vCount=(SELECT COUNT(1) FROM oep.position);
-- 创建技能临时表
CREATE TEMPORARY TABLE IF NOT EXISTS Tmpskill ENGINE = MEMORY
SELECT l.TenantId,l.SkillId,l.ParentId,l.SkillCode,l.SkillName,
@curRow := @curRow + 1 AS row_number
FROM oep.skill l
JOIN (SELECT @curRow := 0) r;
-- 循环获取技能
SET i=1;
loop1: WHILE i<=vCount DO
-- 获取某条记录信息
SET vPositionId= (SELECT PositionId FROM TmpPosition WHERE row_number =i);
-- 当技能ID不为NULL
IF vPositionId IS NOT NULL
THEN
SET MedianId= vPositionId;
SET vPositionId= (SELECT GetPositionInfo(vPositionId));
-- 当为最末级时
IF vPositionId IS NOT NULL AND vPositionId = '00000000-0000-0000-0000-000000000000'
THEN
INSERT INTO tmp_CourseStructure (ID,NAME,PARENTID)
SELECT PositionId AS ID, PositionName AS NAME,PositionParentId AS PARENTID FROM TmpPosition
WHERE PositionId =vPositionId;
ELSE
INSERT INTO tmp_CourseStructure (ID,NAME,PARENTID)
SELECT PositionId AS ID, PositionName AS NAME,PositionParentId AS PARENTID FROM TmpPosition
WHERE PositionId =MedianId;
END IF;
END IF;
SET i=i+1;
END WHILE loop1;
-- 删除临时技能表
DROP TEMPORARY TABLE IF EXISTS TmpPosition;
END;
END
分享到:
相关推荐
java实现树父节点递归获取树子节点 工具类,以后再项目中直接用即可
Java递归算法构造JSON树形结构,Java递归算法构造JSON树形结构Java递归算法构造JSON树形结构
递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树递归动态树...
组织树机构数据递归后台开发方便前端调用。组织树机构数据递归后台开发方便前端调用。
使用递归获取TreeList中所有勾选的结点
php递归获取子级,父级,无限极分类,带demo,效率超高。下载请评价,谢谢!!!
mysql递归调用获取树节点(子树),使用存储过程实现子树的节点的查询,内附有word文件完整说明,和测试数据表的脚本文件。
用递归实现C#树形结构 ,用递归实现C#树形结构 ,
用递归获取文件的方法,,如果有问题的小伙伴可以来问我。。乐意解答
分别用递归和非递归建立树,实现前序,中序,后序,分层遍历
c#递归树自动树 添加父子节点等等操作全部包涵
C#使用递归算法,生成并画树形状的图形。详细介绍请到博客中看看
Java递归将List转为树形结构 博客地址:https://blog.csdn.net/weixin_38500202/article/details/110456363
使用递归生成文件目录树 .txt 使用递归生成文件目录树 .txt
mysql递归调用获取树节点(子树).pdf
二叉树的输入以及递归,非递归的三种遍历。
【IT十八掌徐培成】Java基础第25天-03.递归获取所有超类-内省获取所有属性-getter-setter.zip
这个是通过vc6.0运行出来的分形树,只是一个分形结构图,参考的是一本书上的代码,一根竹竿生长出两个侧干,实现的递归算法。。
springJpa单标递归树形结构
通过递归的方法得到网站后台的管理菜单