Returns the error number of the last database error that was detected.
Syntax
FUNCTION DBMS_ERROR_CODE;
Built-in Type unrestricted function
Enter Query Mode yes
None.
For recursive errors, this Built-in returns the code of the first message in the stack, so the error text must be parsed for numbers of subsequent messages.
/*
** Built-in: DBMS_ERROR_CODE,DBMS_ERROR_TEXT
** Example: Reword certain Oracle Forms error messages by
** evaluating the DBMS error code that caused them
** Trigger: On-Error
*/
DECLARE
errcode NUMBER := ERROR_CODE;
dbmserrcode NUMBER;
dbmserrtext VARCHAR2(200);
BEGIN
IF errcode = 40508 THEN
/*
** Oracle Forms had a problem INSERTing, so
** look at the Database error which
** caused the problem.
*/
dbmserrcode := DBMS_ERROR_CODE;
dbmserrtext := DBMS_ERROR_TEXT;
IF dbmserrcode = -1438 THEN
/*
** ORA-01438 is "value too large for column"
*/
Message('Your number is too large. Try again.');
ELSIF dbmserrcode = -1400 THEN
/*
** ORA-01400 is "Mandatory column is NULL"
*/
Message('You forgot to provide a value. Try again.');
ELSE
/*
** Printout a generic message with the database
** error string in it.
*/
Message('Insert failed because of '||dbmserrtext);
END IF;
END IF;
END;