2013-11-02 60 views
0
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; 

时如果我尝试运行此我得到得到一个MYSQL 1064错误是:创建函数

SQL错误(1064):你在你的SQL语法错误;检查对应于您的MySQL服务器版本的手册,以便在 附近使用正确的语法'RETURN int
BEGIN
DECLARE intOut INT;
SET intOut = SELECT COUNT(”第2行

回答

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

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

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