0 0

Java连MySql数据库存储过程内使用while循环递归至分类根节点的问题~~5

label_proc:
begin
	declare v_category_inner_code int;
	declare v_rootid int default null;
	declare v_tempid int default null;
	declare v_listid varchar(1000) default 'aaa';
	set v_category_inner_code = p_category_inner_code;
	while (v_category_inner_code is  not null)
	do
	begin
		if  exists (select *   from pu_productcategory where category_inner_code = v_category_inner_code) then
			select category_inner_code,up_inner_code into v_tempid,v_category_inner_code  from pu_productcategory where category_inner_code = v_category_inner_code;
		else
			select v_category_inner_code;
			set v_category_inner_code = null;
		end if;

	end;
	end while;
	select * from pu_productcategory where category_inner_code = v_category_inner_code;
end label_proc
如上代码:mySQL存储过程 需传入一个参数p_category_inner_code int,数据表结构主要就一个category_inner_code分类编号 和上up_inner_code上级分类编号,我想根据p_category_inner_code 传入的参数递归查询
出该分类的最根级分类,就一个while简单的循环不错那里了,就是没结果出来,好象变成死循环了,我感觉我做的没错啊,希望高手来解决,本人mysql新手。

 

 呵呵,自己解决了,错在这步:select category_inner_code,up_inner_code into v_tempid,v_category_inner_code  from pu_productcategory where category_inner_code = v_category_inner_code;原本是想根据v_category_inner_code来取记录并把up_inner_code 给v_category_inner_code赋值一步完成,下次递归循环查询的就是ID为这条记录的上级分类,但是MYSQL这里却不能很好的处理这个v_category_inner_code作为条件又给它赋值的操作,语法是没错误的,但是结果就是不出来,运行时还提示的结果超过多行错误!

DAO 
2009年4月08日 01:10

1个答案 按时间排序 按投票排序

0 0

采纳的答案

自己多想想就能出来了嘛,

2009年4月15日 22:58

相关推荐

    mysql递归调用获取树节点(子树)

    在MySQL数据库中,处理层级关系数据,如组织结构、菜单系统或分类树等,常常需要进行递归查询来获取树状结构的子节点。这里我们将深入探讨如何在MySQL中使用存储过程来实现这一功能。 首先,为了理解这个过程,我们...

    java递归树型结构通用数据库

    在Java递归树型结构通用数据库中,使用关系型数据库来存储部门信息,数据库表结构设计包括部门表、用户表、部门用户表等,通过这些表之间的关系实现树型结构的部门管理。 6. 递归算法实现 在Java递归树型结构通用...

    mysql复杂存储过程实例(游标、临时表、循环、递归)

    本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。

    MySQL存储过程完整版使用代码示例

    资源包中囊括了MySQL数据库中的存储过程的使用包含的基本结构及日常所使用到的基本函数的使用【包括java端调用存储过程,创建临时表,动态执行sql语句,过程的递归调用,指针循环取数,批量创建表删除表,树状结构的...

    java实现无限级分类树形,连接mysql数据库

    为了从MySQL数据库中获取无限级分类数据,我们可以使用递归查询或连接查询。这里我们演示递归查询的例子,使用MySQL的WITH RECURSIVE语句: ```sql WITH RECURSIVE tree AS ( SELECT * FROM tree_nodes WHERE ...

    树父节点递归获取树子节点

    树形结构模拟了现实世界中的层次关系,每个节点可以有零个或多个子节点,除了根节点之外,每个节点都有一个父节点。在处理这类数据时,递归是一种非常有效的方法。本篇文章将详细介绍如何在Java中使用递归来实现从父...

    MySQL递归查询

    该函数使用 WHILE 循环来递归地查找所有子节点,并使用 `FIND_IN_SET` 函数来判断当前节点是否是子节点。 创建 `getChildLst` 函数的 SQL 语句如下: ```sql CREATE FUNCTION `getChildLst`(rootId INT) RETURNS ...

    递归循环读取省市区json文件数据,并保存到数据库中(很全面)

    6. **数据库交互**:使用MySQL数据库存储数据,可能涉及到JDBC(Java Database Connectivity)API,它是Java连接数据库的标准接口。程序员需要编写SQL语句来插入数据,或者使用ORM(对象关系映射)框架如Hibernate,...

    WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示)

    在编程语言的编译器设计领域,WHILE循环语句的翻译是至关重要的部分,它涉及到如何将高级语言的逻辑结构转换成机器可执行的指令。在这个过程中,递归下降法和输出三地址表示是两种常用的技术。接下来,我们将详细...

    两种mysql递归tree查询效率-mysql递归tree

    本文通过对比两种MySQL递归树查询方法——使用自连接和递归联合以及利用变量和循环,详细分析了它们各自的实现原理及适用场景。在实际应用中,根据具体需求和数据特点选择合适的方法至关重要。希望本文能为开发人员...

    使用递归循环读取省市区json文件数据,并保存到数据库中

    在IT行业中,数据存储与管理是一项基础且重要的任务...综上所述,这个任务涉及到将JSON数据结构化处理,并利用递归方法逐级读取,最后将这些数据持久化存储到数据库中。这既锻炼了编程技巧,也加深了对数据操作的理解。

    删除数据库表中的父节点以及其子节点

    在数据库管理中,删除具有层级关系的...总之,通过使用存储过程和广度优先搜索,我们可以有效地在数据库表中删除具有父子关系的节点,同时确保删除操作的完整性和安全性。对于复杂的层级数据结构,这种方法尤其有用。

    数据库设计之递归树查询

    本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用于多种数据库系统,如MySQL、PostgreSQL、SQL Server等。 一、理解递归查询 递归查询是一种在数据库中遍历层级...

    DO-WHILE循环语句的翻译程序设计(递归下降法、输出三地址表示)

    本主题主要探讨如何使用递归下降法来解析DO-WHILE循环,并将其转换为三地址代码(3-address code),这是一种常用于中间表示的低级抽象语法。 **DO-WHILE循环语句** DO-WHILE循环是一种后测试循环,它首先执行循环...

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    这种实现方法虽然比直接的递归查询语句复杂,但它避免了存储过程和函数的使用,使得整个查询过程都在SQL层面完成,更符合数据库查询的逻辑,并且可以在单条SQL语句中实现,提高了代码的简洁性和可维护性。...

    使用递归删除树形结构的所有子节点(java和mysql实现)

    使用递归删除树形结构的所有子节点(java和mysql实现) ...使用递归删除树形结构的所有子节点可以使用 Java 和 MySQL 实现,前者使用 Map 存储树形结构的数据,而后者使用递归查询删除所有子节点。

    MySQL实现递归查询的三种方式.rar

    MySQL数据库在处理涉及层次结构或递归的数据时,提供了多种方法。本压缩包中的内容主要介绍了三种实现递归查询的方法,适用于不同的需求和环境。以下是这三种方式的详细说明: ### 方式一:使用自定义函数实现 在...

    java构造多级树结构,支持多根节点

    3. **添加多根节点**:在多根节点的树中,根节点没有父节点,可以通过在构建过程中检查节点的父节点标识来确定根节点。如果某个节点没有父节点,则将其添加到根节点列表中。 ```java List<TreeNode> rootNodes = ...

    一个递归调用的存储过程

    在SQL中,创建递归存储过程涉及编写一个包含CASE语句、WHILE循环或者更常见的是使用递归公用表表达式(Recursive Common Table Expression, CTE)的结构。以下是一个简单的递归存储过程的概念示例: ```sql CREATE ...

Global site tag (gtag.js) - Google Analytics