Object Oriented Oracle PLSQL Tutorial

SQL>  CREATE OR REPLACE TYPE myTable1 AS OBJECT (
  2     f NUMBER
  3   );
  4   /
Type created.
SQL>
SQL> CREATE OR REPLACE TYPE myTable2 AS OBJECT (
  2     f NUMBER
  3   );
  4   /
Type created.
SQL>
SQL> CREATE OR REPLACE PACKAGE Overload AS
  2     PROCEDURE Proc(p1 IN myTable1);
  3     PROCEDURE Proc(p1 IN myTable2);
  4   END Overload;
  5   /
Package created.
SQL>
SQL> show errors
No errors.
SQL>
SQL> CREATE OR REPLACE PACKAGE BODY Overload AS
  2     PROCEDURE Proc(p1 IN myTable1) IS
  3     BEGIN
  4       DBMS_OUTPUT.PUT_LINE('Proc(myTable1): ' || p1.f);
  5     END Proc;
  6
  7     PROCEDURE Proc(p1 IN myTable2) IS
  8     BEGIN
  9       DBMS_OUTPUT.PUT_LINE('Proc(myTable2): ' || p1.f);
 10     END Proc;
 11   END Overload;
 12   /
Package body created.
SQL>
SQL> show errors
No errors.
SQL>
SQL> set serveroutput on
SQL> DECLARE
  2     v_Obj1 myTable1 := myTable1(1);
  3     v_OBj2 myTable2 := myTable2(2);
  4   BEGIN
  5     Overload.Proc(v_Obj1);
  6     Overload.proc(v_Obj2);
  7   END;
  8   /
Proc(myTable1): 1
Proc(myTable2): 2
PL/SQL procedure successfully completed.
SQL>
SQL> drop type myTable1 force;
Type dropped.
SQL>
SQL> drop type myTable2 force;
Type dropped.
SQL>