语法错误无法理解出了什么问题



需要你的帮助,请告诉我我在那个函数中做错了什么? 根据文档示例,所有内容都应该工作..文档

create or replace function loginValidator(nickname varchar, email varchar, u_password varchar) returns boolean as $$
DECLARE
checked boolean := false; n_regex varchar; e_regex varchar; p_regex varchar;
BEGIN 
BEGIN;
select nickname_r into n_regex from regex;
select email_r into e_regex from regex;
select password_r into p_regex from regex;
IF n_regex ~ nickname AND e_regex ~ email AND p_regex ~ u_password THEN checked := true;
COMMIT;
return checked;
END;
$$ language plpgsql;
错误

:在 ";" 处或附近出现语法错误 第 6 行:开始; ^ SQL 状态:42601 字符: 222

你缺少END IF.我会把它改写为:

create or replace function loginValidator(nickname varchar,
email varchar,
u_password varchar)
returns boolean 
as
$$
DECLARE
checked boolean := false; n_regex varchar; e_regex varchar; p_regex varchar;
BEGIN 
-- removed BEGIN
select nickname_r, email_r, password_r into n_regex, e_regex, p_regex from regex;
IF n_regex ~ nickname AND e_regex ~ email AND p_regex ~ u_password 
THEN checked := true;
END IF;    -- added END IF;
-- removed COMMIT;
RETURN checked;
END;
$$ language plpgsql;

甚至更简单:

create or replace function loginValidator(nickname varchar,
email varchar,
u_password varchar)
returns boolean 
as
$$
BEGIN 
RETURN  (select COUNT(*) 
from regex
WHERE nickname_r ~ nickname
AND  email_r ~ email
AND password_r ~ u_password)::boolean;
END;
$$ language plpgsql;

我希望您不要将密码作为明文发送。

最新更新