错误:查询没有结果数据的目的地

Cha*_*nya 10 postgresql plpgsql

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';
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,我收到以下错误,

SELECT _chkLogin('username','abcd') as passed;
Run Code Online (Sandbox Code Playgroud)

错误:查询没有结果数据的目的地

我用过表演然后我得到了一个不同的问题,

PERFORM _chkLogin('username','abcd');
Run Code Online (Sandbox Code Playgroud)

错误:"执行"或附近的语法错误

建议我应该怎么做才能克服这个错误.

小智 19

你确实返回了通过,但你永远不会给它赋值.

并且函数中的select命令必须具有放置数据的位置.

所以.将您的SQL更改为:

SELECT  (_password = $2) INTO passed FROM _vRegistration WHERE _userid = $1;
Run Code Online (Sandbox Code Playgroud)

另外 - 因为您使用变量名称(userid,pwd),所以使用它们:

SELECT  (_password = pwd) INTO passed FROM _vRegistration WHERE _userid = userid;
Run Code Online (Sandbox Code Playgroud)