0

In my query I am getting error message as below:

ERROR: column "pw" does not exist

LINE 1: SELECT (pw = $2) FROM user ^ QUERY: SELECT (pw = $2) FROM user WHERE user_name = $1

CONTEXT: PL/pgSQL function public.check_password(text,text) line 4 at SQL statement

SQL state: 42703

CREATE OR REPLACE FUNCTION check_password(i VARCHAR, pwd VARCHAR)
RETURNS BOOLEAN AS $$
DECLARE passed Boolean;
    BEGIN
    
        SELECT (u.pw = pwd) into passed
        From public.user u
        where u.user_name = i;
        return passed;
        
    END;
    
$$ LANGUAGE plpgsql;

select check_password('userf','12345');  

enter image description here

2
  • Is it supposed to be u.pwd? If not add to your question the table definition for public.user. Commented May 9, 2022 at 4:22
  • user is a reserved keyword. Try public."user". Commented May 9, 2022 at 5:27

1 Answer 1

0

Your function works, but You may need consider the null case. demo

CREATE OR REPLACE FUNCTION check_password(i text, pwd text)
RETURNS BOOLEAN AS $$
DECLARE passed Boolean;
    BEGIN
    
        SELECT (u.pw = pwd) into passed
        From public.user u
        where u.user_name = i;
        
        if passed is null then  passed := false; end if;
        
        return passed;
        
    END;
    
$$ LANGUAGE plpgsql;
Sign up to request clarification or add additional context in comments.

1 Comment

Or simpler: return passed is true

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.