在window装了mysql,使用sqlyog作为图形工具使用。在一个自行创建的库里面定义了各种表,随后又做了几个函数作为查询表的函数。
其中一个函数代码如下:
DELIMITER $$USE `app_test`$$DROP FUNCTION IF EXISTS `getonlinepeople`$$CREATE DEFINER=`root`@`localhost` FUNCTION `getonlinepeople`(onlinetime DATETIME) RETURNS INT(11)
BEGIN
     DECLARE peoplenum INT;
SELECT COUNT(DISTINCT roleid) INTO peoplenum  FROM actionlogin
     WHERE roleid IN
     (
SELECT DISTINCT A.roleid  FROM actionlogin A,actionlogin B WHERE A.roleid = B.roleid AND A.recordtime < B.recordtime AND A.ActionNumber = '252' AND B.ActionNumber = '253' AND onlinetime BETWEEN  A.recordtime   AND B.recordtime 
     UNION
 SELECT DISTINCT onlineCountRecord .roleid  FROM
(SELECT onlineview.roleid, onlineview. recordTime  FROM 
(SELECT *  FROM
(
SELECT * 
FROM actionlogin
WHERE ActionNumber = '252' 
ORDER BY recordTime DESC 
) temp 
GROUP BY roleid) onlineview   
,
(SELECT * FROM
(
SELECT * 
FROM actionlogin
WHERE ActionNumber = '253' 
ORDER BY recordTime DESC 
)temp GROUP BY roleid) offlineview   
WHERE onlineview.roleid = offlineview.roleid AND onlineview.recordtime > offlineview.recordtime) onlineCountRecord
WHERE onlineCountRecord. recordTime  < onlinetime
     ) ;   
     
     RETURN peoplenum;
    END$$DELIMITER ;
代码语法和使用都没有问题,但是不知道为什么。每次从sqlyog下线之后,使用select getonlinepeople的语句就显示库函数不存在。需要重新把函数的这段代码执行一遍才能使用函数。而函数是有保存在这个库里面的,在function里面可以看到这个函数以及实现代码,但就是每次一关闭sqlyog工具函数就不能再使用了
难道mysql中函数每次下线后会自动消亡的么?需要重新执行才能使用?