drop PROCEDURE if EXISTS get_menu_path; CREATE PROCEDURE get_menu_path( IN menu_name VARCHAR(255), OUT menu_path_out VARCHAR(255)) BEGIN top: BEGIN DECLARE parent_id VARCHAR(100); DECLARE menu_path VARCHAR(1024) DEFAULT ''; -- 查找初始菜单的父级菜单 SELECT sParentId INTO parent_id FROM gdsmodule WHERE sChineseUnMemo = menu_name; -- 循环直到找不到父级菜单 WHILE parent_id is not null and parent_id <> '' DO -- 将当前菜单添加到菜单路径中 SELECT CONCAT(sChinese, '>>', menu_path) INTO menu_path FROM gdsmodule WHERE sid = parent_id; -- 查找当前菜单的父级菜单 SELECT sParentId INTO parent_id FROM gdsmodule WHERE sid = parent_id; END WHILE; set menu_path_out = concat(menu_path,menu_name) ; SELECT menu_path_out; END; END ;这段MySQL存储过程get_menu_path旨在根据给定的菜单名称menu_name,找到并返回该菜单的完整路径。路径是通过将每个上级菜单的名称用>>连接起来构建的。
效果: