2016-11-14 59 views
0

我花了几个小时,我不明白为什么这是突出显示红色,我不知道我的错误是什么。MySQL存储的函数语法错误

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和分隔符,以及INT从返回INT

回答

0

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

DELIMITER $$

经过上面的sql为你的函数写入sql。在函数定义的最后添加新定界符$$END。现在,函数的整个定义被传递给服务器,直到新的分隔符。这将解决你的错误。在您的功能定义结束后,将分隔符更改为默认值,如下所示:

DELIMITER ;

还请记住选择一个不存在于您的函数定义内任何地方的分隔符。

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