创建函数时出现MYSQL 1064错误

时间:2013-11-02 12:42:16

标签: mysql sql

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服务器版本对应的手册,以便在附近使用正确的语法   '返回int       BEGIN
          DECLARE intOut INT;
          SET intOut =选择计数('第2行

2 个答案:

答案 0 :(得分:2)

解决问题的一些变化:

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 ;

答案 1 :(得分:1)

定义返回类型是由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;