`

递归获取课程体系树

 
阅读更多
-- 功能:课程体系树
-- 参数: 租户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
分享到:
评论

相关推荐

    算法数据结构体系学习班课程-视频教程网盘链接提取码下载 .txt

    学员可以通过以下方式获取课程资料: - **网盘链接**:[点击此处](https://pan.baidu.com/s/1gSW6m2MGlxwk321V8xyf7Q) - **提取码**:`soho` 此外,为了方便学员获取更多学习资源,还提供了其他几个网站链接,包括...

    谷秋精品课程 毕业设计参考

    "V2.7"可能是课程的版本号,意味着这个课程体系经过了多次迭代与更新,以适应最新的技术趋势和教育需求。 在毕业设计阶段,学生需要综合运用所学知识,独立完成一个完整的项目,这涉及到需求分析、设计、编码、测试...

    基于行动导向的数据结构与算法课程教学初探.pdf

    教学过程中,通过“获取信息、制定计划、实施计划、评估”等一系列自主学习环节,学生能更好地掌握专业知识,形成自我深入的实践经验和知识体系。 当然,在行动导向教学方法的实施中,教师需要根据不同的教学内容...

    澳门科技大学 数据结构课件 Introduction_Java Programming Lectures.pdf

    学生可以通过FTP服务器上的“LP002”文件夹获取课程资料,具体路径为`ftp://ftp.must.edu.mo`。 通过上述概述,可以看出这门课程全面地覆盖了数据结构的基础概念和实践应用,并且使用Java作为教学编程语言。课程...

    计算机专业程序设计方法学

    参考书籍和相关文章提供了丰富的学习资源,而课程评价体系则包括平时成绩和考试成绩,鼓励学生积极参与课堂讨论和完成作业。 通过这门课程的学习,学生将具备扎实的程序设计理论基础,能够运用各种设计方法和技术...

    汇编课程设计 :简单计算器的设计与实现

    对于简单的命令行界面,可以使用系统调用来获取用户输入,然后通过打印机端口或文本模式下的屏幕输出函数显示结果。 总的来说,这个汇编课程设计项目涵盖了基础的汇编语言编程技巧,包括数据处理、流程控制、错误...

    求Fibonacci数程序设计(汇编语言)

    设计目的是让学生熟悉计算机体系结构,特别是DOS操作系统的功能调用以及BIOS功能调用,同时提高汇编语言编程能力。设计内容是编写一个程序,接受用户输入的控制值n,然后计算并显示第n个Fibonacci数。设计时间通常为...

    2006年江苏大学数据结构试题

    数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中组织和管理数据,以便高效地进行存储、检索和处理。这份"2006年江苏大学数据结构试题"是针对这一主题的一份考试卷,它反映了当时教育体系对数据结构的...

    PHP架构师 指南 设计

    - `__get()`: 当试图获取一个不存在或者不可见的成员变量时调用。 - `__set()`: 当试图给对象设置一个不存在或者不可见的成员变量时调用。 - `__call()`: 当试图调用一个不存在或不可见的方法时调用。 **编译PHP时...

    北邮大三软件工程课程历年考试题目

    8. **数据结构与算法**:作为软件开发的基础,数据结构(如栈、队列、链表、树、图等)和算法(排序、查找、递归等)的理解和应用也是必考内容。 9. **数据库管理**:SQL语言的基本操作,数据库设计(ER模型、范式...

    电子书 MIPS Assembly Language Programming Using QtSpim By Ed Jorgen

    《电子书 MIPS Assembly Language Programming Using QtSpim》由Ed Jorgensen博士撰写,旨在为大学级别的编程和架构课程提供一个简单且免费的MIPS汇编语言学习资源。该书使用QtSpim模拟器作为教学工具,使学生能够在...

    课程CS

    课程CS还可能涵盖数据结构,如数组、链表、栈、队列、树和图。这些数据结构的理解和应用对于编写高效算法至关重要。比如,栈是“后进先出”(LIFO)的数据结构,常用于实现回溯或递归算法;队列则是“先进先出”...

    2004 年5月程序员级上午试题.

    例如,要查询至少选修了四门课程的学生学号、姓名及平均成绩,应使用`GROUP BY 学号`并结合`HAVING COUNT(DISTINCT 课程号) &gt;= 3`子句。 ### 关系数据库的运算 通过关系数据库的**连接**运算,可以从两个表中获取...

    数据结构讲义 严蔚敏版

    同时,书中提醒读者,这本讲义需要与严蔚敏的教材结合使用,以获取完整的知识体系。 讲义的内容涵盖了数据结构的基本组成部分,包括但不限于: 1. **经典算法**:这里可能涉及排序、查找等经典算法,如快速排序、...

    2 迭代器模式-MOOC课程内容.pdf

    迭代器必须提供方法来获取下一个元素、检查是否还有元素、重置到起始位置等等。 - ConcreteIterator(具体迭代器):这个角色实现了Iterator接口,并跟踪遍历集合中的当前位置。 - Aggregate(聚合):聚合定义了...

    大学计算机基础(文经医外类)习题参考答案.pdf

    【大学计算机基础】课程主要涵盖了计算思维的基础概念和计算机科学的核心原理。计算思维是指运用计算机科学的思维方式来解决问题,...这门课程的内容丰富多样,涵盖理论、实践和应用,是跨学科知识体系的重要组成部分。

    CSC104

    通过这个压缩包,学生可以获取完整的课程资料,跟随指导逐步学习并完成课程要求。利用Jupyter Notebook,学生不仅可以阅读和理解概念,还可以直接在笔记本中编写和运行代码,加深对理论的理解并提高实践能力。

    Think Python - How to Think Like a Computer Scientist 1.24

    - **逐步构建知识体系**:本书采用逐步构建的方法,确保每个概念都能被读者充分理解后再引入新内容。 **2. Python 编程语言** - **选择原因**:作者选择了Python作为教学语言,主要是因为Python语法简洁、易于阅读...

    范磊C++入门到精通_全集下载

    - **描述**:本教程由范磊老师主讲,适合C++编程初学者学习,内容覆盖了C++的基础到进阶的知识体系,旨在帮助学习者系统地掌握C++编程技能。 - **分享理由**:分享者表示自己正在通过这套教程学习C++,认为它非常有...

Global site tag (gtag.js) - Google Analytics