oracle遍历游标

1,while循环

declare

  v_tname varchar2(20);

  cursor c_tname is select a.TABLE_NAME from user_tables a where a.TABLESPACE_NAME = 'VTMDATA';

begin  

  open c_tname;

  fetch c_tname into v_tname;

  while c_tname%found loop 

     dbms_output.put_line(v_tname);

     fetch c_tname into v_tname;  --此处必须fetch否则就一直取第一个造成死循环

  end loop;

  close c_tname;                  --要手动关闭游标否则不能再次使用

end;

2,for循环

declare

  cursor c_tname is select a.TABLE_NAME from user_tables a where a.TABLESPACE_NAME = 'VTMDATA';

begin  

  for tname in c_tname

  loop

      dbms_output.put_line(tname.table_name);  --通过"." 操作符去对应的列

  end loop;                                    --循环完成之后自动关闭游标,无需手动关闭

exception

  when others then

    dbms_output.put_line(sqlcode);

    dbms_output.put_line(sqlerrm);

end;

你可能感兴趣的:(oracle)