CREATE OR REPLACE FUNCTION _chkLogin(userid varchar, pwd varchar)
RETURNS BOOLEAN AS
$BODY$
DECLARE
passed BOOLEAN;
BEGIN
SELECT (_password = $2) FROM _vRegistration
(see this other question for assign value to variable at declaration section)
The language PLpgSQL syntax have many ways to say:
Y := f(X);
The EXECUTE
clause is only for "dynamic execution" (less performance),
EXECUTE 'f(X)' INTO Y;
Use Y := f(X);
or SELECT
for execute static declarations,
SELECT f(X) INTO Y;
Use PERFORM statment when discard the results or to work with void returns:
PERFORM f(X);
You do return passed but you never assign value to it.
And select command within the function has to have place to put data to.
So. Change your SQL to:
SELECT (_password = $2) INTO passed FROM _vRegistration WHERE _userid = $1;
Also - since you're using names for variables (userid, pwd) use them:
SELECT (_password = pwd) INTO passed FROM _vRegistration WHERE _userid = userid;