`
wangming2012
  • 浏览: 141611 次
  • 性别: Icon_minigender_1
  • 来自: 枣阳
社区版块
存档分类
最新评论

Oracle 存储过程中多层嵌套游标的用法

阅读更多
CREATE OR REPLACE
PROCEDURE P_DELETE_QK (pId in NUMBER, deep in NUMBER) AS
-- pId = 分类ID  deep = 深度,层级
one_val NUMBER;
two_val NUMBER;
three_val NUMBER;
cursor var_one is select "ID" from T_QK where PARENTID = pId;
cursor var_two is select "ID" from T_QK where PARENTID = one_val;
cursor var_three is  select "ID" from T_WZ where QKID = two_val;
BEGIN	
	IF deep = 0 THEN
		for oneID in var_one LOOP		
			one_val:= oneID."ID";
		for twoID in var_two LOOP	
			two_val:= twoID."ID";
		--删除与文章关联表
		for threeID in var_three LOOP
			three_val:= threeID."ID";
			delete from Q_BROWSE where WZID = three_val;--浏览量	
			delete from Q_ATTENTION where WZID = three_val;--关注量
			delete from T_COMMENT where WZID = three_val;--评论
			
		END LOOP;
			--删除这个分类下的所有文章
			delete from T_WZ where QKID = two_val;
			--删除三级分类
			delete from T_QK where "ID" = two_val;
		END LOOP;
			--删除二级分类
			delete from T_QK where "ID" = one_val;	
		END LOOP;
		--删除期刊期数
		delete from T_QKQS where QKID = pId;
		--删除下载量
		delete from Q_DOWNLOAD where QKID = pId;	
		--删除本身
		delete from T_QK where "ID" = pId;
	END IF;

	IF deep = 1 THEN
		for twoID in var_one LOOP					
			two_val:= twoID."ID";
			for threeID in var_three LOOP	
				three_val:= threeID."ID";
				delete from Q_BROWSE where WZID = three_val;--浏览量	
				delete from Q_ATTENTION where WZID = three_val;--关注量
				delete from T_COMMENT where WZID = three_val;--评论
			END LOOP;	
			--删除这个分类下的所有文章
			delete from T_WZ where QKID = two_val;
			--删除三级分类
			delete from T_QK where "ID" = two_val;				
		END LOOP;
		--删除二级分类
		delete from T_QK where "ID" = pId;		
	END IF;

	IF deep = 2 THEN		
		two_val:= pId;
		--删除与文章关联表
		for threeID in var_three LOOP
			three_val:= threeID."ID";	
			delete from Q_BROWSE where WZID = three_val;--浏览量	
			delete from Q_ATTENTION where WZID = three_val;--关注量
			delete from T_COMMENT where WZID = three_val;--评论
		END LOOP;	
		--删除这个分类下的所有文章
		delete from T_WZ where QKID = pId;
		--删除三级分类
		delete from T_QK where "ID" = pId;			
	END IF;
END;
分享到:
评论

相关推荐

    ibatis调用oracle的函数,存储过程的方法 IN 和OUT /游标

    为此,你需要在Java方法中声明一个List类型的参数,而在SQL映射文件中,使用`<resultMap>`定义一个结果集映射,然后在`<selectResult>`标签内定义游标的处理方式。 以下是一个简单的示例: ```xml <!-- SQL映射...

    SQL 学习5

    嵌套游标,正如压缩包中的"PLSQL - 嵌套游标 cursor.txt"所提示的,是PL/SQL(Oracle数据库的编程语言)中的一个重要概念。游标是处理单行结果集的一种方法,它允许程序逐行地读取和操作数据。嵌套游标则是游标的...

    存储过程经典中的经典

    从给定的文件信息来看,文章主要聚焦于数据库存储过程的经典案例,涉及Oracle数据库的存储过程创建、游标使用以及异常处理等核心概念。以下是对这些知识点的详细解析: ### 存储过程经典中的经典 #### 1. 创建存储...

    oracle_sql笔记

    子查询可以嵌套多层,也可以用在SELECT、FROM、WHERE子句中。 六、集合操作 UNION、INTERSECT和EXCEPT用于合并或对比不同查询的结果集。UNION合并结果,INTERSECT返回两个查询的交集,EXCEPT返回第一个查询但不在第...

    Oracle经典教程1——走进Oracle

    本章介绍了Oracle数据库的导入导出技术,包括工具的使用方法和常见问题的解决方案。掌握这些知识对于维护数据库的安全性和可用性非常重要。 通过上述内容的介绍,我们可以看到Oracle是一款功能强大且应用广泛的...

    oracle官方教材

    Oracle DB服务器采用多层架构设计,包括内存结构、进程管理和存储结构等。其中,内存结构主要分为SGA(共享全局区)和PGA(程序全局区)两大部分。 **连接到数据库实例** 连接到Oracle DB实例通常通过监听器实现,...

    Oracle Db Knowledge

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,它提供了高效的数据存储、管理和查询功能,尤其在企业级应用中占据重要地位。Oracle Db Knowledge涵盖了从基础到高级的多个方面,包括但不限于数据库...

    oraclE培训教程

    在Oracle 9i中,PL/SQL进一步加强,支持异常处理、游标、嵌套表和复合类型,使得开发更复杂的应用程序成为可能。 3. **数据仓库**:Oracle 9i引入了高级数据仓库功能,如星型模式和雪花模式的支持,以及快速数据...

    Oracle8i-9i精髓.rar

    4. **对象关系模型**:Oracle 8i是首个广泛支持对象关系模型的数据库系统,引入了如嵌套表、类型、对象、方法等概念,增强了对复杂数据类型的支持。 5. **索引技术**:在Oracle 8i中,B树索引、位图索引、反向键...

    ORACLE常用问题1000问

    它们可以嵌套多层,或者用在FROM、WHERE和HAVING子句中。 4. **聚合函数**:COUNT、SUM、AVG、MAX和MIN等函数用于计算一组值的总数、总和、平均值、最大值和最小值。 5. **分组和聚合**:GROUP BY与HAVING子句结合...

    关于oracle的PLSQL用户指南与参考

    - 多层集合的使用 - **集合的方法**: - 检测集合中的元素是否存在 - 计算集合中的元素个数 - 检测集合的最大容量 - 查找集合中的首末元素 - 循环遍历集合中的元素 - 扩大集合的容量 - 缩减集合的空间 - ...

    Oracel 11g 英文版本教程.rar

    这个“Oracle 11g 英文版本教程.rar”压缩包提供了丰富的学习资源,包括对Oracle 11g核心概念的深入解析以及SQL语言的基础与进阶用法。下面将详细阐述这两个主要部分。 1. **Oracle 11g核心概念** - **数据库架构*...

    PL\SQL语法参考实例

    10. **游标嵌套**:在更复杂的应用场景中,你可能需要在一个游标内部使用另一个游标,这被称为游标的嵌套,以处理多层关系的数据。 通过这个“PL/SQL语法参考实例”文档集,学习者可以找到各种实际例子,了解这些...

    sql语言学习课件ppt

    SQL(Structured Query Language)是用于管理和操作关系数据库的语言,它被广泛应用于ORACLE、SQL Server等数据库管理系统中。本套“SQL语言学习课件PPT”涵盖了从基础到进阶的关键概念,旨在帮助学习者建立坚实的...

    PLSQL用户指南与参考中文PDF版

    **九、使用多级集合**:支持多层嵌套的集合结构,以满足更复杂的数据处理需求。 **十、集合的方法** 1. **检测集合中的元素是否存在 (EXISTS)**:检查集合中是否存在特定的元素。 2. **计算集合中的元素个数 ...

    PLSQLOracle基础教程[参照].pdf

    这些只是Oracle PL/SQL基础教程中的一部分内容,实际上,PL/SQL还包括存储过程、游标、异常处理、包等高级特性,它们提供了强大的功能,使数据库管理、数据处理和应用开发更为高效和灵活。学习和掌握这些知识点对于...

    Java程序员面试题

    Oracle中常用ROWNUM进行分页,或者使用游标。三层嵌套方法是在SQL中逐步缩小查询范围。 17. **Web Service** Web Service是一种基于标准的、平台无关的通信机制,如SOAP(简单对象访问协议)、WSDL(Web服务描述...

Global site tag (gtag.js) - Google Analytics