我們最常見的報錯信息
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 'return returnTime;
end' at line 13
單引號括起來的部分就是報錯的位置,但實際錯誤的語句就是單引號括起來的前面一句的語句錯誤
下面是我寫的自定義函數
##隨機時間age
drop FUNCTION if exists getTime;
delimiter $$
create function getTime()
returns TIMESTAMP
no sql
begin
declare randNum int(2) default 0;
declare returnTime TIMESTAMP;
set randNum=floor(rand()*10);
IF randNum<5 THEN
set returnTime=date_add(curdate(),interval floor(1-(rand()*365))day);
ELSE
set returnTime=date_add(curdate(),interval floor(1+(rand()*365))day);
END IF
return returnTime;
end $$
報錯顯示最後一句'return returnTime; end',錯誤處:前一句END IF (未加分號結尾)
正確語法
##隨機時間age
drop FUNCTION if exists getTime;
delimiter $$
create function getTime()
returns TIMESTAMP
no sql
begin
declare randNum int(2) default 0;
declare returnTime TIMESTAMP;
set randNum=floor(rand()*10);
IF randNum<5 THEN
set returnTime=date_add(curdate(),interval floor(1-(rand()*365))day);
ELSE
set returnTime=date_add(curdate(),interval floor(1+(rand()*365))day);
END IF;
return returnTime;
end $$
還有要注意的是,賦值的時候一定要加set,本人正是因爲這個問題一直沒發現,纔在此深刻檢討