CREATE OR REPLACE PACKAGE protected_pkg  
AS  
  PROCEDURE public_proc;  
  PROCEDURE private_proc ACCESSIBLE BY (PROCEDURE top_trusted_proc);  
END; Package created.
CREATE OR REPLACE PACKAGE BODY protected_pkg   
AS   
  PROCEDURE public_proc AS   
  BEGIN   
    DBMS_OUTPUT.PUT_LINE('Processed protected_pkg.public_proc');   
  END;   
  PROCEDURE private_proc ACCESSIBLE BY (PROCEDURE top_trusted_proc) AS   
  BEGIN   
    DBMS_OUTPUT.PUT_LINE('Processed protected_pkg.private_proc');   
  END;   
END; Package Body created.
CREATE OR REPLACE PROCEDURE top_trusted_proc AS  
BEGIN   
  DBMS_OUTPUT.PUT_LINE('top_trusted_proc calls protected_pkg.private_proc ');  
  protected_pkg.private_proc;  
END; Procedure created.
exec top_trusted_procStatement processed.
top_trusted_proc calls protected_pkg.private_proc
Processed protected_pkg.private_proc
exec protected_pkg.public_procStatement processed.
Processed protected_pkg.public_proc
exec protected_pkg.private_procORA-06550: line 1, column 7: PLS-00904: insufficient privilege to access object PRIVATE_PROCMore Details: https://docs.oracle.com/error-help/db/ora-06550