If a particular subprogram is inlined, performance almost always improves.However, because the compiler inlines subprograms early in the optimization process, it is possible for subprogram inlining to preclude later, more powerful optimizations.In December 2001, I wrote a paper entitled Introduction to Bulk PL/SQL Processing in 8i.
Do not invoke a function in a query unnecessarily, and make the invocation as efficient as possible.
A well-documented limitation of BULK COLLECT in 8i was that each column fetched from a SQL statement or cursor required its own index-by table or collection.
This meant that many types needed to be declared and many index-by tables or collections maintained, which could be very code-intensive.
Subprogram inlining replaces a subprogram invocation with a copy of the invoked subprogram (if the invoked and invoking subprograms are in the same program unit).
To allow subprogram inlining, either accept the default value of the pragma (with the preceding syntax) to give a subprogram a high priority for inlining, and then the compiler inlines it unless other considerations or limits make the inlining undesirable.