我正在尝试在 phpMyAdmin 中的 MySQL 上定义我自己的 FUNCTION
:
BEGIN
DECLARE output VARCHAR
DECLARE temp DATETIME
SET temp = DATEDIFF(NOW(), added)
CASE temp
WHEN 0 SET output = 'today'
WHEN 1 SET output = 'yesterday'
ELSE SET output = CONCAT(temp, ' days ago')
RETURN output
END
错误如下:
De volgende query is mislukt: "CREATE FUNCTION
DAYSPASSED
(date
DATETIME) RETURNS VARCHAR(255) NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER BEGIN DECLARE output VARCHAR DECLARE temp DATETIME SET temp = DATEDIFF(NOW(), added) CASE temp WHEN 0 SET output = 'today' WHEN 1 SET output = 'yesterday' ELSE SET output = CONCAT(temp, ' days ago') RETURN output END"MySQL retourneerde: #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 'DECLARE temp DATETIME SET temp = DATEDIFF(NOW(), added) CASE temp WHEN 0 SET ' at line 3
但是我不太明白它有什么问题。
最佳答案
您缺少一些分号,您的 varchar 的长度说明符,并且您的 case 语法中存在一些错误。这似乎适用于//定界符;
DELIMITER //
CREATE FUNCTION DAYSPASSED(added DATETIME) RETURNS VARCHAR(255)
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
BEGIN
DECLARE output VARCHAR(32);
DECLARE temp INT;
SET temp = DATEDIFF(NOW(), added);
CASE temp WHEN 0 THEN SET output = 'today';
WHEN 1 THEN SET output = 'yesterday';
ELSE SET output = CONCAT(temp, ' days ago');
END CASE;
RETURN output;
END//
DELIMITER ;
关于MySQL 简单函数不适用于变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789169/