>How to get the table names which have zero rows.
At what point in time?
Values can & will change over time.
SELECT COUNT(*) from MY_TABLE
could return 0, but before you can report or use that 0 value
a row could be inserted into the table.

If it fails i know we have to see the column BROKEN in user_jobs,
My question is is there any way if it fails, unless we see in this table we will not know, and suppose if code procedure we are calling there some error occurs how can we trace , i was thinking like after the select statement / or Update or Delete raise exception ON_ERROR insert into a table and every morning check this table, is this approach correct or some other way of tracing a failed Job and loggin errors from the procedure you people can suggest.

If I were you, I'd give serious consideration to writting a logging system for your jobs, so they can record details of their execution in a table for later reference, and possibly email someone if they fail.