declare 
 cursor bbb_cursor(bbb_mc varchar2) is select * from bbb where mc=bbb_mc;
type bbb_type is record(bbbmc varchar2(10),bbbsal varchar2(9));
one_type bbb_type;
begin  
  open bbb_cursor('a');
  loop
  fetch bbb_cursor into one_type;
  exit when bbb_cursor%notfound;
  dbms_output.put_line(one_type.bbbmc);
  end loop;
  close bbb_cursor;
end;
为什么没有输出结果? 表bbb中有  mc  sal  全是VARCHAR2类型
                                a   10
                                a   20
                                b   10
                                b   30
                                ..  .. 

解决方案 »

  1.   

    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 
    Connected as scott
     
    SQL> set serveroutput on
    SQL> 
    SQL> declare
      2   cursor bbb_cursor(bbb_mc varchar2) is select * from bbb where mc=bbb_mc;
      3  type bbb_type is record(bbbmc varchar2(10),bbbsal varchar2(9));
      4  one_type bbb_type;
      5  begin
      6    open bbb_cursor('a');
      7    loop
      8    fetch bbb_cursor into one_type;
      9    exit when bbb_cursor%notfound;
     10    dbms_output.put_line(one_type.bbbmc);
     11    end loop;
     12    close bbb_cursor;
     13  end;
     14  /
     
    a
     
    PL/SQL procedure successfully completed
     
    SQL> select * from bbb;
     
    MC         SAL
    ---------- ----------
    a          123
     
    SQL> 
      

  2.   

    我在PLSQL中为什么没有输出结果呢? 不是set serveroutput on的问题。显示别的都可以显示。好像是游标没有取值 如果不用循环在dbms_output.put_line(‘good’)这个是可以显示的。
      

  3.   

    declare  cursor bbb_cursor(bbb_mc varchar2) is select * from bbb where mc=bbb_mc;
     
    type bbb_type is record(bbbmc varchar2(10),bbbsal varchar2(9));
    one_type bbb_type;
    begin  
      open bbb_cursor('a');
      --loop
      fetch bbb_cursor into one_type;
      --exit when bbb_cursor%notfound;
      dbms_output.put_line('GOOD'||one_type.bbbmc);
      --end loop;
      close bbb_cursor;
    end;
    可以打印出GOOD