ERROR: query has no destination for result data
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'v开发者_如何转开发e 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.
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;
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);
精彩评论