在定义 mysql 函数时定义变量
Defining a variable when I define a mysql function
我在定义以下 mysql 函数时出错:
CREATE DEFINER=`root`@`localhost` FUNCTION PDATE(`gdate` datetime) RETURNS char(100) CHARSET utf8
BEGIN
DECLARE
i,
gy, gm, gd,
g_day_no, j_day_no, j_np,
jy, jm, jd INT DEFAULT 0;
END
错误是:
#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near '' at line 11
即使我只定义一个变量,也会出现此错误。
有什么问题?
谢谢...
您的代码是多语句,因此您可能需要设置分隔符https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html and 'the function body must contain a RETURN value statement' - https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html
DROP FUNCTION IF EXISTS F;
DELIMITER $$
CREATE FUNCTION F(`gdate` datetime)
RETURNS char(100) CHARSET utf8
BEGIN
DECLARE
i,
gy, gm, gd,
g_day_no, j_day_no, j_np,
jy, jm, jd
INT DEFAULT 0;
RETURN i;
END $$
DELIMITER ;
我认为问题在于您的函数除了 DECLARE 之外还需要做一些事情。
我不建议对对象名称使用大写字母
DROP FUNCTION IF EXISTS pdate ;
DELIMITER //
CREATE FUNCTION pdate(gdate DATETIME)
RETURNS VARCHAR(100) CHARSET UTF8
BEGIN
DECLARE i, gy, gm, gd, g_day_no, j_np, jy, jm, jd INT DEFAULT 0 ;
DECLARE r_value VARCHAR(100) DEFAULT NULL ;
SET r_value:=DAYOFWEEK(gdate) ; -- for example
RETURN r_value ;
END//
DELIMITER ;
我在定义以下 mysql 函数时出错:
CREATE DEFINER=`root`@`localhost` FUNCTION PDATE(`gdate` datetime) RETURNS char(100) CHARSET utf8
BEGIN
DECLARE
i,
gy, gm, gd,
g_day_no, j_day_no, j_np,
jy, jm, jd INT DEFAULT 0;
END
错误是:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 11
即使我只定义一个变量,也会出现此错误。 有什么问题?
谢谢...
您的代码是多语句,因此您可能需要设置分隔符https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html and 'the function body must contain a RETURN value statement' - https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html
DROP FUNCTION IF EXISTS F;
DELIMITER $$
CREATE FUNCTION F(`gdate` datetime)
RETURNS char(100) CHARSET utf8
BEGIN
DECLARE
i,
gy, gm, gd,
g_day_no, j_day_no, j_np,
jy, jm, jd
INT DEFAULT 0;
RETURN i;
END $$
DELIMITER ;
我认为问题在于您的函数除了 DECLARE 之外还需要做一些事情。
我不建议对对象名称使用大写字母
DROP FUNCTION IF EXISTS pdate ;
DELIMITER //
CREATE FUNCTION pdate(gdate DATETIME)
RETURNS VARCHAR(100) CHARSET UTF8
BEGIN
DECLARE i, gy, gm, gd, g_day_no, j_np, jy, jm, jd INT DEFAULT 0 ;
DECLARE r_value VARCHAR(100) DEFAULT NULL ;
SET r_value:=DAYOFWEEK(gdate) ; -- for example
RETURN r_value ;
END//
DELIMITER ;