Rich Leick was brought into a major insurance company as a consultant to help them with managing defects and bugs in their core underwriting application. One major problem Rich noticed was that support developers had little-to-no information about the problems they were assigned to fixed: the application provided no logging and all of the error messages simply read "An error occurred. Please try again."
After Rich spent a few weeks adding copious amounts of logging, tracing, and error handling code to the system, the developers were thrilled. They finally had some direction to go when they were assigned a bug. Still, there was one thing that struck Rich as rather odd: the database was throwing lots and lots of "divide by zero" errors.
A little bit of investigation led Rich to the core of the problem, the ABORT_PROCEDURE procedure. Rather than throwing and handling exceptions within the procedures, the original developers decided to use this instead ...
CREATE OR REPLACE PROCEDURE ABORT_PROCEDURE IS
--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
-- Parameters: NONE ==
-- Purpose: FORCE END OF STORED PROCEDURE ==
-- Interval: Called From Other Programs. ==
-- Tables: NONE ==
-- Sub Programs: NONE ==
-- Author: S. Nagheenanajar ==
-- Create Date: 2002-10-08 ==
-- Revisions: ==
-- Author Date Description ==
-- ------------------------- ---------- ------------------------------------------------- ==
-- M. Bolton 2003-06-09 Changed to DIV0 error instead of overflow error ==
--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
--= VARIABLES ==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
v_divzero NUMBER;
--= PROCEDURE BODY =--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
BEGIN
v_divzero := 7;
v_divzero := v_divzero / 0;
END;
--= PROCEDURE END ==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==