开发者

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);     
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜