[英]MySQL Stored Function Syntax Error
我已經花了幾個小時,我不明白為什么將其突出顯示為紅色,並且我不知道我的錯誤是什么。
CREATE FUNCTION Student_Section_Count(StudentID INT)
Returns INT
Begin
DECLARE section_Registred INT;
SET section_Registred= (Select COUNT(DISTINCT Section.ID) as 'Students Registration Count'
FROM Section
Inner Join
Registration on registration.StudentID=Section.ID
Where registration.StudentID=StudentID);
Return Section_Registred;
END$$
Delimiter;
它突出顯示END和定界符,以及Return INT中的INT
好吧,我想我自己弄清楚了。
DELIMITER $$
CREATE FUNCTION Student_Section_Count(StudentID INT)
Returns INT
Begin
DECLARE section_Registred INT;
SET section_Registred= (Select COUNT(DISTINCT Section.ID) as 'Students Registration Count'
FROM Section
Inner Join
Registration on registration.StudentID=Section.ID
Where registration.StudentID=StudentID);
Return Section_Registred;
END$$
默認為分號;
是mysql中的分隔符。 因此,當使用mysql客戶端時,傳遞給服務器的函數定義僅取決於第一個分號,即DECLARE section_Registred INT;
。 函數的其余定義未傳遞到服務器。 這會產生一個錯誤。 要將分號合並到函數定義中,您需要將定界符從分號更改為其他內容。 因此,在定義函數之前,請編寫以下sql更改定界符:
DELIMITER $$
。
在上面的sql之后,為您的函數編寫sql。 在函數定義的末尾將新的定界符$$
附加到END
。 現在,整個功能定義一直傳遞到服務器,直到新的定界符。 這將解決您的錯誤。 函數定義結束后,將分隔符改回默認值,如下所示:
DELIMITER ;
。
還要記住選擇一個在函數定義內任何地方都不存在的分隔符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.