In this course, we will learn how to create, compile, and execute Procedures, Functions, and Packages which are named program units that are pre-compiled and stored in the database. These are powerful programming constructs which help with increasing the re-usability of code along with making it more efficient. We will also take a look at how to pass parameters to these subprograms, parameter modes, and how to pass parameters by reference and by value. We will discuss how roles and privileges come into play when compiling and executing subprograms along with the authid clause. We will also talk about local subprograms and calling functions from SQL statements. All of these are important concepts and will enable you to write efficient and highly performing PL/SQL code.