If the DBMS was not shut down the night before, there would be no method to determine the next execution time of the procedure. Of course the user can run a procedure manually that checks the current SYSDATE agains't the stored date, however the problem is still how the SYSDATE is inserted into the table.
By implementing the DBMS_JOB package, each day at midnight the PL/SQL procedure can be executed to determine if a new month has commenced. If so then execute the relevant code. The interval between each execution of the procedure can be set to 24hrs.