show errors will give syntax errors if procedure didn't compile successfully.
If you get wrong results, you can help yourself by putting some
"dbms_output.put_line" in the code to see what/how it executes.
Or if you want more, check dbms_debug.
"A common mistake that people make when trying to design something completely
foolproof is to underestimate the ingenuity of complete fools" - Douglas Adams