MySQL函数获取语法错误查询不返回

时间:2018-04-03 05:28:59

标签: mysql

我是mysql函数和存储过程的新手。这是我的函数名称为create_role的mysql的函数,它接受参数role_name。我要做的是如果有任何具有特定角色名称的行,那么它应该返回1或是的,如果没有角色那么它应该返回0或false。

CREATE FUNCTION create_role ( role_name VARCHAR(100))
RETURNS INT
BEGIN
    DECLARE check_role INT;
    SET check_role = 0;
    SELECT * from role where role.role=role_name into check_role;
    RETURN check_role;
END

3 个答案:

答案 0 :(得分:1)

您可以使用IFEXISTS

CREATE FUNCTION create_role ( role_name VARCHAR(100))
RETURNS INT
BEGIN
    IF EXISTS (SELECT * from role where role.role=role_name) THEN
       RETURN 1;
    ELSE 
       RETURN 0;
    END IF;
END

答案 1 :(得分:0)

怎么样

SET check_role = (SELECT count(*) > 0 from role where role = role_name);

答案 2 :(得分:0)

您的错误位于select into,请注意function只能返回一个值

CREATE FUNCTION create_role ( role_name VARCHAR(100))
RETURNS INT
BEGIN
    DECLARE check_role INT;
    SET check_role = 0;
    -- make sure this record only return one record
    SELECT checked into check_role from role where role.role=role_name;
    RETURN check_role;
END