CREATE DEFINER = `root`@`127.0.0.1` FUNCTION `GetRootId`(`currentUserId` int,`parmId` int)RETURNS int(11)DETERMINISTICBEGINDECLARE returnId INT DEFAULT 0;DECLARE rootId INT DEFAULT 0;DECLARE roleId INT DEFAULT 0;SELECT id,parent_id,role_id INTO returnId,rootId,roleId FROM t_users WHERE id=parmId LIMIT 1;lab1:BEGINWHILE TRUE DOIF(roleId=4 OR rootId=currentUserId) THEN LEAVE lab1;END IF;SELECT id,parent_id,role_id INTO returnId,rootId,roleId FROM t_users WHERE id=rootId LIMIT 1;END WHILE; END lab1;RETURN returnId;END;然后我在其他SQL中調用他,SELECT GetRootId(2,customer_id) AS rootId from t_stat若t_stat表中有626條數據,那么這條SQL可以執行成功,用時0.4秒,但是若t_stat表中有627條數據或更多,那么這條SQL則會一直處于執行中。求高手解答
添加回答
舉報
0/150
提交
取消