create or replace procedure proc1 (p1 in number, p2 out number, p3 in out number) is
  my_var varchar2(20) := 'String';
BEGIN
  dbms_output.put_line('Start');
  dbms_output.put_line('p1: '||p1);
  dbms_output.put_line('p2: '||p2);
  dbms_output.put_line('p3: '||p3);

  p2 := p1;

  dbms_output.put_line('Finish');
  dbms_output.put_line('p1: '||p1);
  dbms_output.put_line('p2: '||p2);
  dbms_output.put_line('p3: '||p3);

END proc1;
/

create or replace package my_package is
 g_var number := 100;
 procedure reset (g_var in number);
end my_package;
/

create or replace package body my_package is
  procedure reset (g_var in number) is
  begin
    dbms_output.put_line('reset');
  end reset;
end my_package;
/

SQL> set serveroutput on
SQL> variable x number
SQL> variable y number
SQL> execute proc1(1, :x, :y)
Start
p1: 1
p2:
p3:
Finish
p1: 1
p2: 1
p3:

PL/SQL procedure successfully completed.

SQL> execute proc1(p3 => :y, p2 => :x, p1 => 10)
Start
p1: 10
p2:
p3:
Finish
p1: 10
p2: 10
p3:

PL/SQL procedure successfully completed

SQL> execute my_package.g_var := 100

PL/SQL procedure successfully completed.

SQL> execute my_package.reset(200)

PL/SQL procedure successfully completed.