ORA-06530 引用未初始化的组合

时间:2022-05-25 23:37:25
举个例子,因为项目字段过多

create or replace type result_rule as object
(
    fee_type   varchar2(1),
    fee_code   varchar2(10),
    reserve1   varchar2(20),
    reserve2   varchar2(20)
);   
  
create or replace type result_rule_arr as table of result_rule;   
    
如下:     
declare   
    arr   result_rule_arr;   
begin   
    arr   :=   result_rule_arr();   
    arr.extend(10);   
     arr(1).fee_type   :=   'a';   
end;

红色那一行会报ORA-06530 引用未初始化的组合。
查了好久,无果~ 在线等~

4 个解决方案

#1


declare  
    arr  result_rule_arr;  
begin  
    arr  :=  result_rule_arr();  
    arr.extend(10);  
    arr(1) := result_rule( 'a','b','c','d');  
end; 

#2


根据你的定义,arr是result_rule_arr类型,而它又是result_rule的表类型;
所以呢,arr中应该存放result_rule类型,而你在那行红色代码段中却给它赋值'a',当然要出错了

#3


感谢两位,两位的话,令我茅塞顿开

#4


引用 1 楼 47522341 的回复:
declare 
    arr  result_rule_arr; 
begin 
    arr  :=  result_rule_arr(); 
    arr.extend(10); 
    arr(1) := result_rule( 'a','b','c','d'); 
end;


顶起!

#1


declare  
    arr  result_rule_arr;  
begin  
    arr  :=  result_rule_arr();  
    arr.extend(10);  
    arr(1) := result_rule( 'a','b','c','d');  
end; 

#2


根据你的定义,arr是result_rule_arr类型,而它又是result_rule的表类型;
所以呢,arr中应该存放result_rule类型,而你在那行红色代码段中却给它赋值'a',当然要出错了

#3


感谢两位,两位的话,令我茅塞顿开

#4


引用 1 楼 47522341 的回复:
declare 
    arr  result_rule_arr; 
begin 
    arr  :=  result_rule_arr(); 
    arr.extend(10); 
    arr(1) := result_rule( 'a','b','c','d'); 
end;


顶起!