函数:
create or replace function getVN(operid in varchar2) return varchar2 is
  vn varchar2(200);
  temp varchar2(200);
begin
   SELECT OPERNAME INTO temp FROM PTOPER WHERE OPERID=operid;
   vn := temp;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      vn:='数据不存在';
  return vn;
end getVN;
调用部分:
declare vn varchar2(200);
begin
  vn:=gwk.getvn('9999');
  dbms_output.put_line(vn);
end;
老是提示说: ORA-01422: 实际返回的行数超出请求的行数,实际上是这个数值就一条记录。

解决方案 »

  1.   

    SELECT OPERNAME INTO temp FROM PTOPER WHERE OPERID=operid;
    可能返回多条记录了
      

  2.   

    create or replace function getVN(operid in varchar2) return varchar2 is
      vn varchar2(200);
      temp varchar2(200);
    begin
       SELECT OPERNAME INTO temp FROM PTOPER WHERE OPERID=operid;
       vn := temp;
       RETURN vn; --这里要加个RETURN
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          vn:='数据不存在';
      return vn;
    end getVN;
      

  3.   


    果真只有一条记录呵呵create or replace function getVN(operid in varchar2) return varchar2 is
      vn varchar2(200);
      temp varchar2(200);
    begin
       SELECT OPERNAME INTO temp FROM PTOPER WHERE OPERID=operid;
       vn := temp;
      return vn;
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
          vn:='数据不存在';
    end getVN;