mysql完美平方函数出错

时间:2014-12-09 21:56:04

标签: mysql function

这是我试图在mysql中创建的函数:

CREATE FUNCTION isPerfectSquare (testNum INT) 
RETURNS BOOLEAN 
BEGIN 
    DECLARE sqrtint INT; 
    SET sqrtint = sqrt(testNum); 
    DECLARE result BOOLEAN DEFAULT FALSE; 
    IF sqrtint * sqrtint = testNum THEN 
        SET result = TRUE; 
    END IF; 
    RETURN result; 
END;|

我将分隔符设置为|,否则我甚至无法做到这一点。 mysql回来时附近有错误:

DECLARE result BOOLEAN DEFAULT FALSE;

有人能帮我看看我做错了什么吗?我刚刚编写了一个工作正常的不同函数,它以类似的方式运行,而且我无法看到我这次做出的不同之处就是让它出错了。

1 个答案:

答案 0 :(得分:1)

所有声明都必须在块的开头:

CREATE FUNCTION isPerfectSquare (testNum INT) 
RETURNS BOOLEAN 
BEGIN 
    DECLARE sqrtint INT; 
    DECLARE result BOOLEAN DEFAULT FALSE; 
    SET sqrtint = sqrt(testNum); 
    IF sqrtint * sqrtint = testNum THEN 
        SET result = TRUE; 
    END IF; 
    RETURN result; 
END;|

来自documentation

  

DECLARE 仅允许在 BEGIN ... END 复合语句中使用,并且必须在其开始之前,在任何其他语句之前。