PLS-00302:组件' DEP_DET'必须声明 - 为什么我无法获取详细信息

时间:2017-10-24 15:01:54

标签: oracle plsql

 Declare
     Type Dep_Rec_Typ Is Record ( Dep_Id    Number
                        , DEP_NAME  VARCHAR2(30)
                    );
     Type Dep1 Is Table Of Dep_Rec_Typ;                       
     Type Emp_Rec_Typ Is Record ( Employee_Id   Number(6)
                        , First_Name    Varchar2(20)
                        , Last_Name Varchar2(25)
                        , Email Varchar2(25)
                        , Dep_Id    Number
                        );
     Type Emp_Tt Is Table Of  Emp_Rec_Typ;
     Type Class_Grp Is Record ( Dep_Det Dep_Rec_Typ
                       , Emp_Dt Emp_Tt 
                       );

     Type Class_Tt Is Table Of Class_Grp;                            
     class_det Class_Tt;
  Begin
     Select  Dep_Id,Dep_Name
     bulk collect into class_det.Dep_Det
     From T_Dep; 
  end;

错误 错误报告: ORA-06550:第23行,第30栏: PLS-00302:组件' DEP_DET'必须申报 ORA-06550:第24行第2栏: PL / SQL:ORA-00904 ::无效的标识符 ORA-06550:第21行,第2栏: PL / SQL:忽略SQL语句 06550. 00000 - "行%s,列%s:\ n%s" *原因:通常是PL / SQL编译错误。 *操作:

1 个答案:

答案 0 :(得分:0)

我不确定你是否可以使用那种结构的批量收集,但你可以轻松地进行循环。

   cursor cu_t is
     Select  Dep_Id,Dep_Name
     From T_Dep;

     i number;
Begin
     i := 1;
    for rec in cu_t loop
       class_det(i).Dep_Det := rec;
       -- dbms_output.put_line( class_det(i).Dep_Det.Dep_Id||' '|| class_det(i).Dep_Det.Dep_name);
       i := i + 1;
   end loop;
end;