Reprinted with Permission by Quest Software Oct.  2003


Code Listing 2: The errpkg.raise procedure

1  PROCEDURE errpkg.raise (
2    err_in IN INTEGER := SQLCODE, msg_in IN VARCHAR2 := NULL)
3  IS
4  BEGIN
5    IF err_in BETWEEN -20999 AND -20000

6    THEN
7       RAISE_APPLICATION_ERROR (err_in, NVL (msg_in, errtext (err_in)));
8
9    ELSIF err_in > 0 AND err_in NOT IN (1, 100)
10   THEN
11      RAISE_APPLICATION_ERROR (-20000, err_in ||'-'||errtext (err_in));

12
13   ELSE
14      EXECUTE IMMEDIATE
15      'DECLARE myexc EXCEPTION; ' ||
16      ' PRAGMA EXCEPTION_INIT (myexc, ' ||
17         TO_CHAR (err_in) || ');' ||
18      'BEGIN RAISE myexc; END;';

19    END IF;
20* END errpkg.raise;