ORA-06530: Reference to uninitialized composite
ORA-06512: at "PROCEDURE/PACKAGE", line 88
ORA-06512: at "PROCEDURE/PACKAGE", line 446
ORA-06512: at line 11
06530. 00000 -  "Reference to uninitialized composite"
*Cause:    An object, LOB, or other composite was referenced as a
           left hand side without having been initialized.
*Action:   Initialize the composite with an appropriate constructor
           or whole-object assignment.
Cause:
This error would be found when using oracle collection table type, and trying to assign the value to the collect. When compiling the code, it would be fine. But, when execute the package/procedure, you will have this error message.
The error caused when trying to extend the define table type object without being initialized. See the scenario below:
CREATE TYPE obj_test AS OBJECT
       (tst_id       number,
        tst_name    VARCHAR2(50));
/
CREATE TYPE tab_test AS TABLE OF obj_test;
/
declare
      l_tab_tst tab_test := tab_test();   
begin
    begin 
        l_tab_tst.extend;
        l_tab_tst(l_tab_tst.last).tst_id := 22;
        l_tab_tst(l_tab_tst.last).tst_name :=  'TEST';
    exception 
    when no_data_found then 
       null;
    end; 
end;
/
Solution:
To fix this, simply add initialized object line as shown below:
declare
      l_tab_tst tab_test := tab_test();   
begin
    begin 
        l_tab_tst.extend;
        l_tab_tst(l_tab_tst.last) := type_supplier(NULL, NULL);
        l_tab_tst(l_tab_tst.last).tst_id := 22;
        l_tab_tst(l_tab_tst.last).tst_name :=  'TEST';
    exception 
    when no_data_found then 
       null;
    end; 
end;
/
Blast from the Past: I Don't Like Your Examples!
                      -
                    
 Originally written in 2000, I thought you might like to check this out in 
2016. 
I Don't Like Your Examples! 10/11/2000 
I have been writing books about t...
9 years ago






 
1 comments:
Hey,
This artical really works for me. Thanks a lot.
Post a Comment