在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中函数每次下线后会自动消亡的么?需要重新执行才能使用?
其中一个函数代码如下:
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中函数每次下线后会自动消亡的么?需要重新执行才能使用?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货