A
procedure or function is a schema object that consists of a set of SQL statements and other PL/SQL constructs, grouped together, stored in the database, and executed as a unit to solve a specific problem or perform a set of related tasks.
Packages encapsulate related procedures, functions, and associated cursors and variables together as a unit in the database.
For rest of the questions please refer to the Oracle
[
documentation] and
[
tutorial].