有很多與你的函數定義問題,讓名單,然後:
1 - 您正在創建的功能,因此它需要一個returns
聲明
2 - 你的刪除命令與錯誤的語法,limit
應該是最後一個子句(之間,是沒有意義的限制刪除,雖然它的工作原理)
3 - 沒有THEN
爲ELSE
發言,並else
不走的條件下,它應該是另一個ELSEIF
4 - 如果它是一個功能,你需要的東西return
5 - 你沒有與end
語句結束你的函數
所以它應該是這樣的:
delimiter //
create function kill_aliens (rand int) returns int
begin
if rand <= 0.2 and rand >= 0 then
delete from alienkilling where dtypeid = 11 limit 2;
elseif rand <=0.75 and rand > 0.2 then
delete from alienkilling where dtypeid = 12 limit 3;
elseif rand <=1 and rand >0.75 then
delete from alienkilling where dtypeid = 13 limit 1;
end if;
return 0; -- it must be some value
end //
delimiter ;
備註:瞭解如何縮進代碼。如果這不會返回任何東西,它應該是一個不是函數的過程。
喜歡的東西:
delimiter //
create procedure kill_aliens (rand int)
begin
if rand <= 0.2 and rand >= 0 then
delete from alienkilling where dtypeid = 11 limit 2;
elseif rand <=0.75 and rand > 0.2 then
delete from alienkilling where dtypeid = 12 limit 3;
elseif rand <=1 and rand >0.75 then
delete from alienkilling where dtypeid = 13 limit 1;
end if;
end //
delimiter ;
發表你的問題的錯誤消息。它會指示語法錯誤的位置。 –
初始刷,'else rand <= 1且rand> 0.75 then'這沒有意義。也許你的意思是'elseif' –
錯誤代碼:1064.你的SQL語法有錯誤;檢查對應於您的MySQL服務器版本使用附近的正確的語法手動「開始 如果蘭特<= 0.2和RAND> = 0那麼 從那裏alienkilling極限2刪除」在行3 \t 0.000秒 @BurhanKhalid –