1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
CREATE
FUNCTION
`getChildList`(rootId
INT
)
RETURNS
varchar
(1000)
BEGIN
DECLARE
sChildList
VARCHAR
(1000);
DECLARE
sChildTemp
VARCHAR
(1000);
SET
sChildTemp =
cast
(rootId
as
CHAR
);
WHILE sChildTemp
is
not
null
DO
IF (sChildList
is
not
null
)
THEN
SET
sChildList = concat(sChildList,
','
,sChildTemp);
ELSE
SET
sChildList = concat(sChildTemp);
END
IF;
SELECT
group_concat(id)
INTO
sChildTemp
FROM
user_role
where
FIND_IN_SET(parentid,sChildTemp)>0;
END
WHILE;
RETURN
sChildList;
END
;
/*获取子节点*/
/*调用: 1、select getChildList(0) id; 2、select * 5From user_role where FIND_IN_SET(id, getChildList(2));*/
CREATE
FUNCTION
`getParentList`(rootId
INT
)
RETURNS
varchar
(1000)
BEGIN
DECLARE
sParentList
varchar
(1000);
DECLARE
sParentTemp
varchar
(1000);
SET
sParentTemp =
cast
(rootId
as
CHAR
);
WHILE sParentTemp
is
not
null
DO
IF (sParentList
is
not
null
)
THEN
SET
sParentList = concat(sParentTemp,
','
,sParentList);
ELSE
SET
sParentList = concat(sParentTemp);
END
IF;
SELECT
group_concat(parentid)
INTO
sParentTemp
FROM
user_role
where
FIND_IN_SET(id,sParentTemp)>0;
END
WHILE;
RETURN
sParentList;
END
;
/*获取父节点*/
/*调用: 1、select getParentList(6) id; 2、select * From user_role where FIND_IN_SET(id, getParentList(2));*/
|