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