Exception:
In PL/SQL, a warning
or error condition is called an exception. Exceptions can be
internally defined (by the run-time system) or user defined.
Exception
Types:
• Predefined Oracle Server (Implicitly Raised)
• Non predefined Oracle Server (Implicitly Raised)
• User-defined (Explicitly Raised)
Predefined Oracle Server
Predefined exceptions are used to detect and handle Oracle
system errors that occur internally at program run time.
An internal exception is raised implicitly whenever your PL/SQL program violates an Oracle rule or exceeds a system-dependent limit.
An internal exception is raised implicitly whenever your PL/SQL program violates an Oracle rule or exceeds a system-dependent limit.
Exception
Examples:
set feedback off
set serveroutput on
create table foo (
a varchar2(10),
b varchar2(10),
i number
);
insert into foo values ('xxx','yyy',1);
insert into foo values ('zzz','aaa',1);
insert into foo values ('qqq','mmm',3);
commit;
declare
l_a foo.a%type;
l_b foo.b%type;
begin
select a,b into l_a, l_b from foo where i=1;
dbms_output.put_line('a: ' || l_a || ', b: ' || l_b);
exception
when too_many_rows then
dbms_output.put_line('*** Exc: too many rows');
when no_data_found then
dbms_output.put_line('*** Exc: no data');
end;
/
declare
l_a foo.a%type;
l_b foo.b%type;
begin
select a,b into l_a, l_b from foo where i=2;
dbms_output.put_line('a: ' || l_a || ', b: ' || l_b);
exception
when too_many_rows then
dbms_output.put_line('*** Exc: too many rows');
when no_data_found then
dbms_output.put_line('*** Exc: no data');
end;
/
declare
l_a foo.a%type;
l_b foo.b%type;
begin
select a,b into l_a, l_b from foo where i=3;
dbms_output.put_line('a: ' || l_a || ', b: ' || l_b);
exception
when too_many_rows then
dbms_output.put_line('*** Exc: too many rows');
when no_data_found then
dbms_output.put_line('*** Exc: no data');
end;
/
drop table foo;
PL/SQL allows developers to define their own exceptions.User can define the
error/exception programically based on the business rule. This is usually done
on validating some values or parameters.Even exception can be given meaningful
names.
There are 3 steps to handle the User exception
1. Define Exception
We need to define the exception before we raise and handle. User Exceptions are defined using keyword EXCEPTION in declaration section of the block.
The syntax is as follows
There are 3 steps to handle the User exception
1. Define Exception
We need to define the exception before we raise and handle. User Exceptions are defined using keyword EXCEPTION in declaration section of the block.
The syntax is as follows
Code :
<exception_name> EXCEPTION ;
2. Raise the Exception
Once the exceptions are defined , they need to be raised anywhere in the body depending upon predifined logic. User exceptions are raised using the keyword RAISE.
Syntax is as shown below
Code :
RAISE <exception_name>
3. Handle the Exception.
User exception are handled in the same way predefined exceptions are handled. They are handlded in exception block using WHEN .. THEN keyword
Syntax is as shown below
Code :
WHEN <exception_name>
THEN
.....
Alternately we can give user defined error code and error message for the hadled excpetion. RAISE_APPLICATION_ERROR is used for this purpose.
Its syntax is as follows.
Code :
RAISE_APPLICATION_ERROR(<error_code>,
<error_message>)
Here "error_code" should be in the range of (-20000,-20999) and "error_message" is the user defined error message for the user defined exception.
No comments:
Post a Comment