繁体   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