【问题标题】:Got syntax error can't understand what is wrong出现语法错误无法理解问题所在
【发布时间】:2019-03-25 15:00:27
【问题描述】:

需要您帮忙,请告诉我我在该功能中做错了什么? 根据文档示例,所有示例都应该工作.. docs

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

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您缺少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;
    

    我希望您不要以明文形式存储密码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2014-05-18
      相关资源
      最近更新 更多