create or replace procedure check_password(name varchar2,pass varchar2) 
is
cursor cur_pass is
select count(*) from mylogin 
where name=name and password=pass;
begin
for i in cur_pass(name,pass) loop
dbms_output.put_line('password valid');
end loop;
end;

解决方案 »

  1.   

    运行时有什么问题啊??你执行的游标返回的值是0、1或更大。但是For i in 的话,无论返回几,都会数据password valid。你应该判断游标的返回值再处理输出。
      

  2.   

    create or replace procedure check_password(n varchar2,p varchar2) 
    is
    n integer;
    begin
    select count(*) into n from mylogin 
    where name = n and password = p;
    if n = 0 then
     dbms_output.put_line('password invalid');
    else
     dbms_output.put_line('password valid');
    end if;
    end;