Oracle/PL/SQL

15일차 # 3-17

Bohemian life 2012. 4. 24. 22:12

create or replace package pack_cursor

  is

    procedure cursor_open;

    procedure cursor_fetch (a number);

    procedure cursor_close;

  end;

  / 


  create or replace package body pack_cursor

  is

    cursor emp_cursor is

      select rownum as no, e.* 

      from (select * from emp

            order by hiredate) e;


    emp_rec emp_cursor%rowtype;


    no number := 1;


    procedure cursor_open

    is

    begin

      if emp_cursor%isopen = false then 

        open emp_cursor;

      end if;

    end;


    procedure cursor_fetch (a number)

    is

    begin

      if emp_cursor%isopen = true then 

        for i in 3..3+4-1 loop

          fetch emp_cursor into emp_rec;

          p(emp_rec.empno||' '||emp_rec.hiredate);

          no := no+1;

        end loop;

      end if;

    end;


    procedure cursor_close

    is

    begin

      close emp_cursor;

    end;


  end;

  / 


  exec pack_cursor.cursor_open

  exec pack_cursor.cursor_fetch(2)


  exec pack_cursor.cursor_fetch(4)

  exec pack_cursor.cursor_fetch(2)


  exec pack_cursor.cursor_close