【问题标题】:Getting a MYSQL 1064 error when creating a function创建函数时出现 MYSQL 1064 错误
【发布时间】:2013-11-13 13:16:58
【问题描述】:
DELIMITER $$

    CREATE FUNCTION nameOfFunct(intIn int)
    RETURN int
    BEGIN
        DECLARE intOut INT;
        SET intOut = SELECT count(*)
            FROM tableToTakeFrom
            WHERE columToCompareTo = intIn;

        RETURN intOut;
    END;
        $$

DELIMITER;

如果我尝试运行它,我得到的只是:

SQL 错误 (1064):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在附近使用的正确语法 '返回整数
开始
声明 intOut INT;
SET intOut = select count(' 在第 2 行

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    解决问题的几个更改:

    DELIMITER $$
    
    CREATE FUNCTION nameOfFunct(intIn INT)
    -- RETURN INT
    RETURNS INT
    BEGIN
        DECLARE intOut INT;
        /*SET intOut = SELECT COUNT(*)
            FROM tableToTakeFrom
            WHERE columToCompareTo = intIn;*/
        SET intOut = (SELECT COUNT(*)
            FROM tableToTakeFrom
            WHERE columToCompareTo = intIn);
        RETURN intOut;
    END $$
    
    DELIMITER ;
    

    【讨论】:

      【解决方案2】:

      定义返回类型由RETURNS 关键字完成,而不是RETURN 关键字:

      CREATE FUNCTION nameOfFunct(intIn int)
      RETURNS int
      BEGIN
          DECLARE intOut INT;
          SET intOut = SELECT count(*) 
                       FROM   tableToTakeFrom
                       WHERE  columToCompareTo = intIn;
          RETURN intOut;
      END;
      

      【讨论】:

        猜你喜欢
        • 2018-01-26
        • 1970-01-01
        • 1970-01-01
        • 2021-04-15
        • 2011-06-27
        • 2012-10-22
        • 2021-06-25
        • 2015-10-01
        • 2011-03-25
        相关资源
        最近更新 更多