Today I've been investigating an issue with wrapped packages, which refused to compile on my target database.
The error was PLS-00753: malformed or corrupted wrapped unit
But there was no reason for that. Only few packages were problematic while others compiled without an error.
I tried to wrap packages in 2 ways:
- from the database using dbms_ddl.wrap function
- from the Linux OS command line (available on https://www.apexofficeprint.com/wrap/)
But the result was the same. An error.
But at the end I figured out what the problem is and there is a way how to override it. 😎
And it seems that this is a database issue. My target database is the OCI database version
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.24.0.1.0
The last line of wrapped code is completely filled and it seems that the database is unable to unwrap it correctly... like it can not determine where the code ends?!
![](https://blogger.googleusercontent.com/img/a/AVvXsEikeSCM84opCsPeYUxFK-atyR_-FVNVNsntjyWP7b0ESt-iZ6rZb5ZkH6HWqjZTcgje7DNziC-XtEAX6EC86sR6F0AXTy2VvGFVBmiShUI-MSMj5pbxOTIW3pj484Pd4TwYGkPqdqUZzm3E3thKmIvk89UqXxWgey3VmUe3PCfd99IpQxsXtW03n884X7c=w842-h305)
But if I add ";" character at the end of the code... or split the last line in two lines... then it can be compiled without problem! See pics below:
The solution with splitting the last line into two lines solves an issue in Oracle APEX 24.1 too.
So, for a permanent solution simply add one or two empty lines of code to Your source code before wrapping. This will extend the wrapped code into a new line.
Produced wrapped source looks like this and it can be compiled on the target database without any manual alterations: