PL SQL Oracle PLSQL

SQL>
SQL>  create or replace
  2    package utilities as
  3      procedure swap( p_parm1 in out number,
  4                      p_parm2 in out number );
  5      procedure swap( p_parm1 in out varchar2,
  6                      p_parm2 in out varchar2 );
  7      procedure swap( p_parm1 in out date,
  8                      p_parm2 in out date );
  9    end utilities;
 10  /
Package created.
SQL>
SQL>  create or replace
  2    package body utilities as
  3
  4      procedure swap( p_parm1 in out number,
  5                 p_parm2 in out number ) is
  6        l_temp number;
  7      begin
  8        dbms_output.put_line( 'Swapping number' );
  9        l_temp := p_parm1;
 10        p_parm1 := p_parm2;
 11        p_parm2 := l_temp;
 12      end swap;
 13
 14      procedure swap( p_parm1 in out varchar2,
 15                      p_parm2 in out varchar2 ) is
 16        l_temp varchar2(32767);
 17      begin
 18        dbms_output.put_line( 'Swapping varchar2' );
 19        l_temp := p_parm1;
 20        p_parm1 := p_parm2;
 21        p_parm2 := l_temp;
 22      end swap;
 23
 24      procedure swap( p_parm1 in out date,
 25                      p_parm2 in out date ) is
 26        l_temp date;
 27      begin
 28        dbms_output.put_line( 'Swapping date' );
 29        l_temp := p_parm1;
 30        p_parm1 := p_parm2;
 31        p_parm2 := l_temp;
 32      end swap;
 33
 34    end utilities;
 35    /
Package body created.
SQL>
SQL>
SQL>  declare
  2      l_num1 number := 1;
  3      l_num2 number := 2;
  4      l_date1 date := sysdate;
  5      l_date2 date := sysdate + 1;
  6    begin
  7      utilities.swap( l_num1, l_num2 );
  8      dbms_output.put_line( 'l_num1 = ' || l_num1 );
  9      dbms_output.put_line( 'l_num2 = ' || l_num2 );
 10      utilities.swap( l_date1, l_date2 );
 11      dbms_output.put_line( 'l_date1 = ' || l_date1 );
 12      dbms_output.put_line( 'l_date2 = ' || l_date2 );
 13    end;
 14    /
Swapping number
l_num1 = 2
l_num2 = 1
Swapping date
l_date1 = 12-JUN-08
l_date2 = 11-JUN-08
PL/SQL procedure successfully completed.
SQL>