mysql函数递归问题请教

stephenchern 2017-08-01 02:14:43
在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;这个设置深度也已经设置了
还是如此。
...全文
344 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2017-08-02
  • 打赏
  • 举报
回复
存储函数不支持递归,改成存储过程。 可以参考。 http://blog.csdn.net/acmain_chm/article/details/4142971 MySQL中进行树状所有子节点的查询
zjcxc 2017-08-01
  • 打赏
  • 举报
回复
递归改循环吧
LongRui888 2017-08-01
  • 打赏
  • 举报
回复
顺便说一句,mysql在开发方面的功能相对弱一点,所以很多sql server或者oracle上的代码,没办法直接移到mysql,都需要进行改造才能运行
LongRui888 2017-08-01
  • 打赏
  • 举报
回复
mysql不支持递归函数吧 。 mysql实现这个递归的问题,你可以用find_in_set 函数,网上一搜就有,是把问题反过来,先把你要查的数据通过自关联找出来,合并起来,然后再查

56,912

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧