代码之家  ›  专栏  ›  技术社区  ›  Chaitanya

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

  •  10
  • Chaitanya  · 技术社区  · 14 年前
    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';
    

    当执行上述代码时,AM收到以下错误:

    SELECT _chkLogin('username','abcd') as passed;
    

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

    我用过“表演”,然后我遇到了另一个问题,

    PERFORM _chkLogin('username','abcd');
    

    错误:语法错误在或附近 “表演”

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

    2 回复  |  直到 10 年前
        1
  •  19
  •   user80168    14 年前

    你回来了,但是你 从未 给它赋值。

    在函数内选择命令必须有放置数据的位置。

    所以。将SQL更改为:

    SELECT  (_password = $2) INTO passed FROM _vRegistration WHERE _userid = $1;
    

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

    SELECT  (_password = pwd) INTO passed FROM _vRegistration WHERE _userid = userid;
    
        2
  •  3
  •   Community Egal    7 年前

    赋值注意事项

    (见 this other question for assign value to variable at declaration section )

    语言plpgsql语法有很多种说法:

     Y := f(X);
    

    这个 EXECUTE 子句仅用于“动态执行”( 性能降低 )

     EXECUTE 'f(X)' INTO Y;     
    

    使用 Y := f(X); SELECT 对于执行静态声明,

     SELECT f(X) INTO Y;
    

    使用 PERFORM 放弃结果或处理无效返回时的声明:

     PERFORM f(X);