MySQL存储函数语法错误

时间:2016-11-14 03:23:02

标签: mysql

我花了好几个小时,我无法理解为什么这个突出显示为红色,我不知道我的错误是什么。

PM2

它突出显示END和Delimiter,以及来自Return INT的INT

2 个答案:

答案 0 :(得分:0)

好吧,我想我自己想出来了。

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$$

答案 1 :(得分:0)

默认情况下,分号;是mysql中的分隔符。因此,当使用mysql客户端时,传递给服务器的函数定义仅限于第一个分号,即DECLARE section_Registred INT;。函数的其余定义未传递给服务器。这会产生错误。要在函数定义中包含分号,您需要将分隔符从分号更改为其他内容。所以在定义函数之前写下面的sql来更改分隔符:

DELIMITER $$

以上sql为你的函数编写sql之后。在函数定义的末尾将新分隔符$$附加到END。现在,函数的整个定义被传递到服务器,直到新的分隔符。这将解决您的错误。在函数定义结束后,将分隔符更改回默认值:

DELIMITER ;

还要记住选择一个在函数定义中不存在的分隔符。