1. 程式人生 > >mysql通過自定義函式查詢一級選單

mysql通過自定義函式查詢一級選單

-- mysql 查詢一級選單
SELECT DISTINCT
  d.id AS "id",
  d.pid AS "pid",
  d.name AS "name",
  d.icon AS "icon",
  d.description AS "description",
  d.url AS "url",
  d.ordernum AS "orderNum",
  is_leaf_res (d.id, 0) AS "leaf"
FROM
  sys_user a,
  sys_user_role b,
  sys_role_res c,
  sys_res d
WHERE a.id = b.userid
  AND b.roleid = c.roleid
  AND c.resid = d.id
  AND d.pid = -1
  AND d.type = 0
  AND a.username = 'admin'
ORDER BY d.ordernum

Mysql 自定義函式:

DELIMITER $$

USE `yxb_sxpt`$$

DROP FUNCTION IF EXISTS `is_leaf_res`$$

CREATE DEFINER=`root`@`%` FUNCTION `is_leaf_res`(V_ID INT,V_TYPE INT) RETURNS INT(11)
BEGIN
DECLARE R_LEAF INT;
IF V_TYPE IS NULL THEN
    SELECT COUNT(1) INTO R_LEAF FROM SYS_RES T WHERE T.PID = V_ID;
    RETURN (R_LEAF);
ELSE
    SELECT COUNT(1) INTO R_LEAF FROM SYS_RES T WHERE T.PID = V_ID AND T.TYPE = V_TYPE;
    RETURN(R_LEAF);
END IF;
END$$

DELIMITER ;