DECLARE
SUBSCRIPT_OUTSIDE_LIMIT EXCEPTION;
PRAGMA EXCEPTION_INIT(SUBSCRIPT_OUTSIDE_LIMIT, -06532);
TYPE tab_student_list IS VARRAY(5) OF VARCHAR2(100);
vt_students tab_student_list := tab_student_list();
BEGIN
vt_students.EXTEND(5);
vt_students(1) := 'AKSHAY';
vt_students(2) := 'AMRIT';
vt_students(3) := 'MAC';
vt_students(4) := 'SUSHEEL';
vt_students(5) := 'SHAIL';
FOR i IN vt_students.FIRST .. vt_students.LAST
LOOP --{
dbms_output.put_line('Student # ' || i || ' :' || vt_students(i));
END LOOP; --}
vt_students.EXTEND; --this will give error as we try to EXTEND the varray beyond 5 elements
EXCEPTION
WHEN SUBSCRIPT_OUTSIDE_LIMIT THEN
dbms_output.put_line('Cannot extend vt_students array beyond 5 elements');
END;
Below is the error
Error report -
ORA-06532: Subscript outside of limit
ORA-06512: at line 22
06532. 00000 - "Subscript outside of limit"
*Cause: A subscript was greater than the limit of a varray
or non-positive for a varray or nested table.
*Action: Check the program logic and increase the varray limit
if necessary.
You can handle the exception using PRAGMA EXCEPTION_INIT and assigning the ORA-06532 code to an exception variable.
DECLARE
SUBSCRIPT_OUTSIDE_LIMIT EXCEPTION;
PRAGMA EXCEPTION_INIT(SUBSCRIPT_OUTSIDE_LIMIT, -06532);
......
EXCEPTION
WHEN SUBSCRIPT_OUTSIDE_LIMIT THEN
dbms_output.put_line('Cannot extend vt_students array beyond 5 elements');
END;
Output is as below
Student # 1 :AKSHAY
Student # 2 :AMRIT
Student # 3 :MAC
Student # 4 :SUSHEEL
Student # 5 :SHAIL
Cannot extend vt_students array beyond 5 elements
For more details on excetion handling you can refer to
Exception Handling Methods
Bulk Collect Exception Handling
There are good examples of bulk exception handling in below link
https://www.databasejournal.com/oracle/bulk-exceptions-in-oracle/
To continue ...
No comments:
Post a Comment