Oracle has been around so long and so many questions have been asked and answered in so many different ways that it can be difficult to find a definitive answer, especially to a best-practices type question like this one.
There are dozens of pages and blog posts explaining the basic differences between PL/SQL functions and procedures:
Functions return a value. Procedures don’t.
Functions are callable (with some restrictions) from within standard SQL statements. Procedures aren’t.
A schema is a collection of tables, views, procedures, indexes and other logical objects. Each schema is owned by a database user and has the same name as that user.
Because there is essentially a 1-to-1 relationship between schemas and users, you can think of a schema as a user and a user as a schema. In setting up for Webucator’s Oracle courses, students create the C##HR user and then ran a couple of scripts to create and populate schema objects for a fictional Human Resources company. This is one of Oracle’s demo schemas, which we review in this article.