树形菜单 的mysql 存储过程实现增删查
来源:互联网 发布:新楼盘查询软件 编辑:程序博客网 时间:2024/05/17 06:41
添加:入参:IN nodename VARCHAR(50),IN pageUrl VARCHAR(50),IN type INT,IN pid INT
BEGIN
DECLARE declLID INT default -1;
DECLARE declRID INT default -1;
DECLARE declNID INT default 0;
DECLARE declTree INT default -1;
DECLARE declNkID INT default -1;
DECLARE declCNT INT default 0;
set declNkID=(select count(*)+1 from t_plat_admin_left_tree);
SET declCNT =(select count(*) from t_plat_admin_left_tree);
SELECT declNkID;
IF declCNT <=0 THEN
-- 根节点赋初值
SELECT declLID,declRID,declNID,declTree,declNkID,declCNT;
INSERT INTO t_plat_admin_left_tree(id,LID,RID,Tree,NodeName,fid,tp) VALUES (0,1,2,0,'根节点',-1,0) ;
else
BEGIN
IF pid = 0 then
SELECT tpal.RID into declRID FROM t_plat_admin_left_tree tpal WHERE ID=pid;
SET declNID=declRID/2;
UPDATE t_plat_admin_left_tree SET RID = RID + 2 WHERE id=0;
INSERT INTO t_plat_admin_left_tree(id,LID,RID,Tree,NodeName,fid,tp) VALUES (declNID,declRID,declRID + 1,1,NodeName,PID,TYPE) ;
ELSE
SELECT LID, RID, Tree + 1 INTO declLID,declRID,declTree
FROM t_plat_admin_left_tree WHERE ID = PID;
SET declNID=pid+(declRID-declLID+1)/2;
UPDATE t_plat_admin_left_tree SET RID = RID + 2 WHERE RID >= declRID ;
UPDATE t_plat_admin_left_tree SET LID = LID + 2 WHERE LID > declRID ;
UPDATE t_plat_admin_left_tree SET ID = ID + 1 WHERE LID > declRID;
UPDATE t_plat_admin_left_tree SET fID = fID + 1 WHERE fid> pid AND RID>declRID;
INSERT INTO t_plat_admin_left_tree(id,LID,RID,Tree,NodeName,fid,tp) VALUES (declNID,declRID,declRID + 1,Tree,NodeName,pid,type) ;
end if;
END;
end if;
SELECT declNkID ;
select * from t_plat_admin_left_tree;
END
删除:入参:IN `inid` int
BEGIN
DECLARE delcLID INT DEFAULT 0;
DECLARE delcRID INT DEFAULT 0;
DECLARE delcWID INT DEFAULT 0;
DECLARE delcDID INT DEFAULT 0;
DECLARE delcNUM int DEFAULT 0;
-- set @NUM=delcNUM;
-- select id,lid,rid,wid from t_plat_admin_left_tree tpaf where tpaf.id=id;
SELECT tpaf.ID, tpaf.LID, tpaf.RID, RID - LID + 1 into delcDID ,delcLID ,delcRID,delcWID FROM t_plat_admin_left_tree tpaf WHERE tpaf.ID = inid ;
IF delcDID != 0 THEN
select delcWID/2 into delcNUM;
SELECT delclid,delcrid,delcWID,inid;
SELECT * FROM t_plat_admin_left_tree WHERE LID BETWEEN delcLID AND delcRID;
DELETE FROM t_plat_admin_left_tree WHERE LID BETWEEN delcLID AND delcRID;
UPDATE t_plat_admin_left_tree SET RID = RID - delcWID WHERE RID > delcRID;
UPDATE t_plat_admin_left_tree SET LID = LID - delcWID WHERE LID > delcRID ;
update t_plat_admin_left_tree set ID=ID-delcNUM where ID>inid;
update t_plat_admin_left_tree set FID=FID-delcNUM where FID>delcID;
END IF;
SELECT delcDID ;
END
查询:入参:IN pid int ,IN delctree int
BEGIN
SELECT Z.ID,z.lid,z.rid,Z.Tree,Z.NodeName,z.fid,z.tp
FROM t_plat_admin_left_tree Z,t_plat_admin_left_tree P
WHERE P.ID=pid AND Z.LID>=P.LID AND Z.RID <=P.RID AND (delctree = 0 OR Z.Tree<=P.Tree+delctree)
ORDER BY Z.LID ASC;
END
- 树形菜单 的mysql 存储过程实现增删查
- 树形菜单的二叉链表实现--数据库实现(增删改存储过程实现)
- 存储过程实现基本的增删查改
- 存储过程实现基本的增删查改(二)
- 存储过程实现基本的增删查改
- 存储过程实现基本的增删查改(二)
- BootStrap Jstree 树形菜单的增删改查的实现源码
- oracle 存储过程实现增删改查
- sqlserver存储过程的增删改查
- 存储过程增删改查
- oracle-扫盲贴:存储过程实现增删改查
- oracle-扫盲贴:存储过程实现增删改查
- oracle-扫盲贴:存储过程实现增删改查
- 11-13asp中实现存储过程的增删改查!
- JDBC基于MVC架构项目实例-实现对MySQL数据表的增删改查、调用数据表中的存储过程和函数
- 使用存储过程进行基本的增删改查
- db2数据库存储过程---简单的增删改查
- jqery easyui 利用treeview实现菜单的增删改查
- 第十一周 线索化二叉树(中序)
- dp和px转换
- xcode7代码自动排版(格式化)
- jquery easyui设置COMBOX高度,COMBOX初始化
- 你还在重复的findViewById么?
- 树形菜单 的mysql 存储过程实现增删查
- iOS中UIKit——UIButton设置边框
- UML系列教程
- Windows运行Python服务
- 守护线程的理解
- 更新游戏后还是那个storage的数据
- ios 运行时环境的应用
- Android开源项目大全 - 博客类
- JavaScript读取文件路径