Not so good but 1 more way of achieving this is by using WAITFOR DAELAY feature.
Eg:
BEGIN
WAITFOR DELAY '24:00';
EXECUTE sp_helpdb;
END;
GO
Now the problem with WAITFOR DAELAY is that, you can't give a time more than 24 hours. So in this case you can do a workaround as follows:
In your SP add few lines:
IF CAST(GETDATE() AS DATE) = '07/31/2014'--OR dynamically calculate last day of the month
BEGIN
DELETE FROM TableName;-- your delete statement
END
As you will schedule WAITFOR for everyday at night, so we can assume on '07/31/2014' also it will be invoked at night only, hence only matching the date part will be enough. If you specify the time then there is possibility that the SP is invoked on exact specified time as there are many factors involved (such CPU cycle is available, thread, etc.) while invoking a script.
For your reference: http://msdn.microsoft.com/en-IN/library/ms187331.aspx