我花了好几个小时,我无法理解为什么这个突出显示为红色,我不知道我的错误是什么。
PM2
它突出显示END和Delimiter,以及来自Return INT的INT
答案 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 ;
。
还要记住选择一个在函数定义中不存在的分隔符。