【问题标题】:MySQL Stored Function Syntax ErrorMySQL 存储函数语法错误
【发布时间】:2016-11-14 14:39:38
【问题描述】:

我已经花了几个小时,我不明白为什么这是红色突出显示,我不知道我的错误是什么。

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 和 Delimiter,以及 Return INT 中的 INT

【问题讨论】:

    标签: mysql


    【解决方案1】:

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

    DELIMITER $$.

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

    DELIMITER ;.

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

    【讨论】:

      【解决方案2】:

      嗯,我想是我自己想出来的。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-13
        • 1970-01-01
        • 2012-04-12
        • 2014-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多