The Public Specification
CREATE OR REPLACE PACKAGE public_pkg
IS
PROCEDURE do_only_this;
END;
Package created.
My Not-so-private Private Package
CREATE OR REPLACE PACKAGE private_pkg
IS
PROCEDURE do_this;
PROCEDURE do_that;
END;
Package created.
Add ACCESSIBLE BY to Whitelist
CREATE OR REPLACE PACKAGE private_pkg
ACCESSIBLE BY (public_pkg)
IS
PROCEDURE do_this;
PROCEDURE do_that;
END;
Package created.
Public Package Body is a Redirect
CREATE OR REPLACE PACKAGE BODY public_pkg
IS
PROCEDURE do_only_this
IS
BEGIN
private_pkg.do_this;
private_pkg.do_that;
END;
END;
Package Body created.
CREATE OR REPLACE PACKAGE BODY private_pkg
IS
PROCEDURE do_this
IS
BEGIN
DBMS_OUTPUT.put_line ('THIS');
END;
PROCEDURE do_that
IS
BEGIN
DBMS_OUTPUT.put_line ('THAT');
END;
END;
Package Body created.
Invoke My Public Program
BEGIN
public_pkg.do_only_this;
END;
THIS
THAT
But Not This
BEGIN
private_pkg.do_this;
END;
ORA-06550: line 2, column 4: PLS-00904: insufficient privilege to access object PRIVATE_PKGMore Details: https://docs.oracle.com/error-help/db/ora-06550