There are three kinds of programs (also known as modules) in PL/SQL:
A procedure is a program that executes one or more statements. It’s called as a standalone statement.
A function is a program that executes one or more statements and returns a value. It’s called within an expression (assignment statement, conditional expression, etc.).
A trigger is a program whose execution is “triggered” by some event, usually a SQL operation on a table or column within a table.
All of these are named, executable code units. A package, as described in Chapter 8, is a container for procedures and/or functions, as well as data. Packages, therefore, aren’t executable objects themselves.