declare cursor cur_info is select e.*, d.dept_name from employee e , dept d where e.dept_no = d.dept_no(+); v_dept_row cur_info%rowtype; 
for v_dept_row in cur_info loop -- TODO-Aend loop; 
--如果在这里 引用v_dept_row变量,变量的值是不是null?

解决方案 »

  1.   

    你都没有open cursor啊,估计会报异常错误
      

  2.   

    for v_dept_row in cur_info loop 游标for循环示显示游标的一种快捷使用方式,它使用for循环依次读取结果集中的行数据,当for循环开始时,游标自动打开(不需要open),每循环一次系统自动读取游标当前行的数据(不需要fetch),当退出for循环时,游标被自动关闭(不需要使用close)。使用游标for循环的时候不能使用open语句,fetch语句和close语句,否则会产生错误。 
      

  3.   

    declare     
    begin
      for v_dept_row in 
      (
      select e.*, d.dname 
        from emp e , dept d 
        where e.deptno = d.deptno(+)
      ) loop
         dbms_output.put_line('dept:'||v_dept_row.ename);
      end loop;
    end;
    /在plsql里面的command窗口模式下执行得到如下结果:SQL> set serveroutput on
    SQL> 
     
    dept:SMITH
    dept:ALLEN
    dept:WARD
    dept:JONES
    dept:MARTIN
    dept:BLAKE
    dept:CLARK
    dept:SCOTT
    dept:KING
    dept:TURNER
    dept:ADAMS
    dept:JAMES
    dept:FORD
    dept:MILLER
     
    PL/SQL procedure successfully completed
     
    SQL>