簡體   English   中英

MySQL存儲函數語法錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM