我是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
答案 0 :(得分:1)
您可以使用IF
和EXISTS
:
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