PL/SQL provides the mechanism
to handle any unexpected error/exception using reserved keyword ‘EXCEPTION’.
PL/SQL Exception message
consists of three parts.
i)
Type of Exception
ii)
An Error Code
iii)
A message
Syntax:-
DECLARE
Declaration part
BEGIN
Execution part
EXCEPTION
WHEN ex_name1 THEN
Statement
WHEN ex_name2 THEN
Statement
WHEN Others THEN
Statement
END;
Types of Exception:-
Named
System Exceptions:
DUP_VAL_ON_INDEX
|
ORA-00001
|
You tried to execute an
INSERT or UPDATE statement that has created a duplicate value in a field
restricted by a unique index.
|
TIMEOUT_ON_RESOURCE
|
ORA-00051
|
You were waiting for a
resource and you timed out.
|
TRANSACTION_BACKED_OUT
|
ORA-00061
|
The remote portion of a
transaction has rolled back.
|
INVALID_CURSOR
|
ORA-01001
|
You tried to reference a
cursor that does not yet exist. This may have happened because you've
executed a FETCH cursor or CLOSE cursor before OPENing the cursor.
|
NOT_LOGGED_ON
|
ORA-01012
|
You tried to execute a
call to Oracle before logging in.
|
LOGIN_DENIED
|
ORA-01017
|
You tried to log into
Oracle with an invalid username/password combination.
|
NO_DATA_FOUND
|
ORA-01403
|
You tried one of the
following:
1.
You
executed a SELECT INTO statement and no rows were returned.
2.
You
referenced an uninitialized row in a table.
3.
You
read past the end of file with the UTL_FILE package.
|
TOO_MANY_ROWS
|
ORA-01422
|
You tried to execute a
SELECT INTO statement and more than one row was returned.
|
ZERO_DIVIDE
|
ORA-01476
|
You tried to divide a
number by zero.
|
INVALID_NUMBER
|
ORA-01722
|
You tried to execute a
SQL statement that tried to convert a string to a number, but it was
unsuccessful.
|
STORAGE_ERROR
|
ORA-06500
|
You ran out of memory or
memory was corrupted.
|
PROGRAM_ERROR
|
ORA-06501
|
This is a generic
"Contact Oracle support" message because an internal problem was
encountered.
|
VALUE_ERROR
|
ORA-06502
|
You tried to perform an
operation and there was a error on a conversion, truncation, or invalid
constraining of numeric or character data.
|
CURSOR_ALREADY_OPEN
|
ORA-06511
|
You tried to open a
cursor that is already open.
|
Named
Programmer defined exceptions:-
It is necessary for programmers to define their own
exceptions, which aren't defined by PL/SQL. These are called Named
Programmer-Defined Exceptions.
When Others Clause:-
This is to handle all other
exceptions which are neither getting handled by ‘Named System Exceptions’
and nor by ‘Named Programmer defined
exceptions’.
Syntax:
…..
EXCEPTION
When excep_1
Then
[Statement]
When excep_2 Then
[Statement]
When Others Then
raise_application_error(-20001,'An
error was encountered’);
END;
What
is RAISE_APPLICATION_ERROR ( ):-
It is a built-in procedure in
oracle which is used to display the user-defined error messages along with the
error number.
No comments:
Post a Comment