The main points you learned in this chapter are that you can return multiple rows and return data using OUT
parameters, as well as return multiple rows of complex data, similar to a SELECT
query. You also learned that several sets of tables can be returned, and you can possibly have them evaluated in a lazy manner using refcursors. Moreover, you can return data as complex as you want using either XML or JSON.
So, there really are very few reasons for not using database functions as your main interaction mechanism with the database. In the next chapter, we will learn how to call functions when different types of events occur in the database.