定義以下 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 - 您的 SQL 語法有錯誤;檢查與您的 MySQL 服務器版本相對應的手冊,以在第 11 行的 '' 附近使用正確的語法
即使我只定義一個變數,我也會收到此錯誤。問題是什么?
謝謝...
uj5u.com熱心網友回復:
您的代碼是多陳述句,因此您可能需要設定分隔符https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html和“函式體必須包含 RETURN 值陳述句” - 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 ;
https://www.db-fiddle.com/f/8kWMQjBS57kNaAKWq2EZhM/1
uj5u.com熱心網友回復:
我認為問題是除了 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 ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/438126.html
下一篇:MYSQL中兩個結果的區別
