create or replace procedure odd_even
is
cursor Cursor_Dual is select mod(level,0) AS "NUM", decode (mod (level,2),1,'ODD',0,'EVEN') AS "ODD_EVEN"
from dual connect by level <=100;

TYPE CURR_TYPE IS TABLE OF Cursor_Dual%ROWTYPE
INDEX BY PLS_INTEGER;

lv_type  CURR_TYPE;

begin
  open Cursor_Dual;
loop
fetch Cursor_Dual bulk collect into lv_type;
FOR INDX in 1 .. lv_type.count
loop
     dbms_output.put_line ('THE NUMBER IS'||':'||' '||lv_type(INDX).NUM||' '||''||'-'||''||' '||
                           'IT IS'||':'||' '||lv_type(INDX).ODD_EVEN);
end loop;
EXIT WHEN Cursor_Dual%NOTFOUND;
   END LOOP;
close Cursor_Dual;
end;

-----------------------

create or replace procedure PROC_DISPLAY_ODD_EVEN (P_Number in number)
IS
begin
    if P_Number =0 then
      dbms_output.put_line('number is 0 SO undefined');
    elsif mod(P_Number,2)=0
    then
        dbms_output.put_line('number is even');
    else
        dbms_output.put_line('number is odd');
    end if;
end;