Mysql 创建存储函数时出现语法错误 5.6.10
Mysql syntax error creating stored function 5.6.10
我在 MySQL 中执行以下函数时遇到语法错误。
DELIMITER $$
DROP FUNCTION IF EXISTS `WORKDAYS` $$
CREATE FUNCTION `WORKDAYS` (start_date DATETIME, end_date DATETIME)
RETURNS INT
LANGUAGE SQL
DETERMINISTIC
BEGIN
DECLARE days INT;
SET days = 0;
REPEAT
SET days = days + (CASE WHEN DAYNAME(start_date) in ('Friday',
'Saturday', 'Sunday') THEN 0 ELSE 1 END);
SET start_date = DATE_ADD(start_date, INTERVAL 1 DAY);
UNTIL start_date > end_date END REPEAT;
RETURN days;
END $$
DELIMITER ;
我得到的错误:[查询 2 中的错误] 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 'RETURN 天前使用的正确语法;
在第 13 行结束'
END REPEAT;
后查询中的隐藏字符。确保您的编辑器是 UTF-8。
DELIMITER $$
DROP FUNCTION IF EXISTS `WORKDAYS`$$
CREATE FUNCTION `WORKDAYS` (start_date DATETIME, end_date DATETIME)
RETURNS INT
LANGUAGE SQL
DETERMINISTIC
BEGIN
DECLARE days INT;
SET days = 0;
REPEAT
SET days = days + (CASE WHEN DAYNAME(start_date) in ('Friday','Saturday', 'Sunday') THEN 0 ELSE 1 END);
SET start_date = DATE_ADD(start_date, INTERVAL 1 DAY);
UNTIL start_date > end_date END REPEAT;
RETURN days;
END$$
DELIMITER ;
我在 MySQL 中执行以下函数时遇到语法错误。
DELIMITER $$
DROP FUNCTION IF EXISTS `WORKDAYS` $$
CREATE FUNCTION `WORKDAYS` (start_date DATETIME, end_date DATETIME)
RETURNS INT
LANGUAGE SQL
DETERMINISTIC
BEGIN
DECLARE days INT;
SET days = 0;
REPEAT
SET days = days + (CASE WHEN DAYNAME(start_date) in ('Friday',
'Saturday', 'Sunday') THEN 0 ELSE 1 END);
SET start_date = DATE_ADD(start_date, INTERVAL 1 DAY);
UNTIL start_date > end_date END REPEAT;
RETURN days;
END $$
DELIMITER ;
我得到的错误:[查询 2 中的错误] 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 'RETURN 天前使用的正确语法; 在第 13 行结束'
END REPEAT;
后查询中的隐藏字符。确保您的编辑器是 UTF-8。
DELIMITER $$
DROP FUNCTION IF EXISTS `WORKDAYS`$$
CREATE FUNCTION `WORKDAYS` (start_date DATETIME, end_date DATETIME)
RETURNS INT
LANGUAGE SQL
DETERMINISTIC
BEGIN
DECLARE days INT;
SET days = 0;
REPEAT
SET days = days + (CASE WHEN DAYNAME(start_date) in ('Friday','Saturday', 'Sunday') THEN 0 ELSE 1 END);
SET start_date = DATE_ADD(start_date, INTERVAL 1 DAY);
UNTIL start_date > end_date END REPEAT;
RETURN days;
END$$
DELIMITER ;