I once read an article (although I can't put my browser on it at the moment) by the great Thomas Kyte about this topic. One of the significant points he brought up was that when you recompile a procedure, it's dependancies become invalidated thereby ensuring an endless recompile nightmare. With packages, you only need to re-compile dependant objects when the package specification changes. As long as the interface to the package (specification) stays the same, you can change the logic (body) all you want without triggering massive recompilation.
From the non-technical perspective, I find it easier to manage a few (reasonably sized) packages rather than many procedures and functions. Configuration management is easier for one thing.
I have not read it for a while, but what I remeber on packages, along with dependency explanation already given, You can share variables among functions/procedures in package.
Bookmarks