I know how to find the last DDL for standalone procedures. Is there a way to do it for procedures written inside a package?
I think you can not. In any of USER_
/ALL_
/DBA_
OBJECTS
, LAST_DDL_TIME
column is related to the whole object - in your case, a package. Procedures that are part of the package aren't tracked.
So, you know when package was modified, but can't tell which part was it.