关于网友提出的“ mysql函数递归问题请教”问题疑问,本网通过在网上对“ mysql函数递归问题请教”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: mysql函数递归问题请教
描述:递归mysql函数
在mysql里写递归函数 如下:
use semis;
drop function if exists f_get_category_full_name;
delimiter //
create function f_get_category_full_name(
vCategoryID varchar(32))
returns varchar(300)
language sql
deterministic
reads sql data
sql security invoker
comment '获取部职别全称(包括上级节点名称)'
begin
declare vCategoryFullName varchar(300);
set max_sp_recursion_depth = 10;
select ParentID, CategoryName into @ParentID, @CategoryName
from t_category
where CategoryID = vCategoryID;
set vCategoryFullName = @CategoryName;
if @ParentID is null then
return(vCategoryFullName);
else
set vCategoryFullName = concat(f_get_category_full_name(@ParentID), '/', @vCategoryFullName);
end if;
return(@vCategoryFullName);
end;
//
delimiter ;
select f_get_category_full_name('000001');
报错:
Recursive stored functions and triggers are not allowed.
该函数在mssql中ok 但是在mysql中一直报错
还请指教为什么?
set max_sp_recursion_depth = 10;这个设置深度也已经设置了
还是如此。
解决方案1: 存储函数不支持递归,改成存储过程。 可以参考。
http://blog.csdn.net/acmain_chm/article/details/4142971
MySQL中进行树状所有子节点的查询
解决方案2: 递归改循环吧
解决方案3: 顺便说一句,mysql在开发方面的功能相对弱一点,所以很多sql server或者oracle上的代码,没办法直接移到mysql,都需要进行改造才能运行
解决方案4: mysql不支持递归函数吧 。
mysql实现这个递归的问题,你可以用find_in_set 函数,网上一搜就有,是把问题反过来,先把你要查的数据通过自关联找出来,合并起来,然后再查
以上介绍了“ mysql函数递归问题请教”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4433324.html