Default constructors are created when the variable array is defined in PL/SQL or in the database. They can initialize the variable to a known state, as in the following examples:
DECLARE /* || define a variable based on a variable array from the || database and initialize it with its default constructor */ v_a_varray a_varray := a_varray(); /* || define a local variable array and then create a variable || based on it and initialize it with its default constructor */ TYPE v_local_array_type IS VARRAY(10) OF NUMBER; v_local_array v_local_array_type := v_local_array_type(); BEGIN /* || Put 10 elements into each variable array */ v_a_varray := a_varray(1,2,3,4,5,6,7,8,9,10); v_local_array := v_local_array_type(1,2,3,4,5,6,7,8,9,10); END;
You’ll see this error:
ORA-06532: Subscript outside of limit
This error occurs because you attempted to put two elements into a variable array with a limit of 1. Since VARRAYs are “bounded” (unlike index-by tables), attempting to assign a value to an element with a nonpositive index, or greater than the declared limit of the VARRAY, causes this error.
Here are the methods associated with each description:
The statements are: