procedure check_pass(v_operid varchar2,v_pass varchar2,out_ifpower out varchar2)
  is
  n_count integer;
  str_pass varchar2(50);
  begin
  select count(*) into n_count from operate where operid=v_operid;
  if n_count=0 then
  out_ifpower:='0';
  else 
       select pass into str_pass from  operate where operid=v_operid;
       if str_pass=v_pass then
       --out_ifpower:=1;
       select roleid into out_ifpower from operate where operid=v_operid;
       else 
       out_ifpower:='0';
       end if;
  end if;
  end;

解决方案 »

  1.   

    1、能确保roleid 不为空吗?
    2、“out_ifpower” 的传入参数设定长度了吗?
      

  2.   

    似乎是客户端程序报的错,不是oracle的提示。另外你的程序太罗嗦了,这样就行:
    procedure check_pass(v_operid varchar2,v_pass varchar2,out_ifpower out varchar2) is
    begin
      select roleid into out_ifpower from operate where operid=v_operid and pass=v_pass;
    exception 
      when no_data_found then
        out_ifpower := '0';
    end;