Recently I had a request from a customer to unzip files in the database. Of course, I used one of the most popular Oracle APEX APIs - APEX_ZIP - which is implemented in the APEX long time ago... I think in version 4 or 5.
At the moment I'm writing this blog I've been using the latest Oracle APEX 23.2. and I noticed some new functionality in this API... which is not yet officially documented in the Oracle API documentation.
So, what's new?
It goes for a new function named "get_dir_entries" and a new function "get_file_content" adapted for a new dir_entries approach.
Warning! Old function get_files is getting deprecated! This is stated in the package comments:

In which APEX version is this new functionality implemented?
I checked all APEX versions going from 23.2 toward previous versions and figured out that those new functionalities are implemented in version 21.2
Version 21.1:

Version 21.2:

But in the official documentation there is no mention of those new functions:

New approach vs old approach - benchmark
In the package comment it is stated that this new function is much faster and much more efficient.
So I tested performances on extracting 10112 files from a ZIP archive. There are 2 steps in the process:
- get a list of all files from the ZIP file with get_dir_entries or ger_files function
- extract all files from the ZIP file with get_file_content function
Results are:
- new approach with get_dir_entries took cca 30 seconds to finish
- old approach with get_files - after more than 1 hour I stopped the script execution
For more details about the new approach visit Zoran's official blog post accessible at:
A Conclusion
If You have a newer version of APEX, ≥ 21.2, this new approach is definitely worth using.
Performances are blazing fast.
Plus, there are additional metadata provided for files, like an uncompressed file size for example.