ERROR: query has no destination for result data
-
21-09-2019 - |
Question
CREATE OR REPLACE FUNCTION _chkLogin(userid varchar, pwd varchar)
RETURNS BOOLEAN AS
$BODY$
DECLARE
passed BOOLEAN;
BEGIN
SELECT (_password = $2) FROM _vRegistration WHERE _userid = $1;
RETURN passed;
END;
$BODY$
LANGUAGE 'plpgsql';
When am executing the code above am getting the following error,
SELECT _chkLogin('username','abcd') as passed;
ERROR: query has no destination for result data
I've used perform then i get a different problem,
PERFORM _chkLogin('username','abcd');
ERROR: syntax error at or near "perform"
Suggest me what should I be doing in order to overcome this error.
Solution
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;
OTHER TIPS
Notes about assign value
(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);