我在存储过程里面是这样定义的
CREATE OR REPLACE Package Point_Center Is 里面Type Rec_Coitem Is Record(
    Itemspecid    Bss_Sys.Item_Spec.Item_Spec_Id%Type,
    Itemspecvalue Varchar2(250),
    Action        Varchar2(3));
  Type Tab_Coitems Is Table Of Rec_Coitem;Type Rec_Custorder Is Record(
    Coitemslist     Tab_Coitems,
    Ordertypelist   Tab_Ordertypes,
    Fbobjlist       Tab_Fbobjs,
    Cust            Rec_Cust,
    Mailing         Rec_Mailing,
    Relalist        Tab_Corelas,
    Ordercommoninfo Rec_Ordercommoninfo,
    Fcoid           Fb_Cust_Order.Fco_Id%Type,
    Fconbr          Fb_Cust_Order.Fco_Nbr%Type,
    Fcoseq          Fb_Cust_Order.Fco_Seq%Type,
    Res         Fb_Cust_Order.Res%Type,
    Inchargenbr     Fb_Cust_Order.Fco_Nbr%Type,
    Exchangeinfos   Tab_Exchangeinfos);  Type Tab_Custorders Is Table Of Rec_Custorder;CREATE OR REPLACE Package Body Point_Center Is 里面  Custorders Tab_Custorders := Tab_Custorders();
  Custorders.Trim(Custorders.Count);
  Custorders.Extend;  Custorders(i + 1) .Coitemslist.Extend;--当我调试走到这时就进异常,ORA-06531: 引用未初始化的收集。
  相同的,如果注释上面的,走到下面这个也是进异常,报的是一样的ORA-06531
  Custorders(i + 1) .Ordertypelist.Extend;  知道的大哥叫我怎么初始化!我在网上查了很多资料都没解决。

解决方案 »

  1.   

    很明显,Custorders未定义,他是什么???????
      

  2.   

    定义啦!
    Custorders Tab_Custorders := Tab_Custorders();
    这个就是啊
      

  3.   

    Custorders.Trim(Custorders.Count);--Trim?
    Custorders.Extend;--Extend?
    这两个又是什么呢?
      

  4.   

    Type Tab_Coitems Is Table Of Rec_CoitemLZ用得是嵌套表,在使用嵌套表之前,必须对它进行初始化。
    Coitemslist这个变量应该是Tab_Coitems 类型,我没有看到它被初始化LZ是嵌套表里面有嵌套表?
      

  5.   

    我只看到了Custorders 这个被初始化,是否是因为这个问题导致
      

  6.   

    是的!嵌套表中有嵌套表!
    主要是Custorders里面的Coitemslist异常
    Coitemslist Tab_Coitems,--我把这里改为Coitemslist Tab_Coitems:=Tab_Coitems()
    还是进异常下面是定义的Tab_Coitems
    Type Rec_Coitem Is Record(
        Itemspecid    Bss_Sys.Item_Spec.Item_Spec_Id%Type,
        Itemspecvalue Varchar2(250),
        Action        Varchar2(3));
    Type Tab_Coitems Is Table Of Rec_Coitem;
      

  7.   

    我很少用嵌套表,原来用过index by表,index by表不用再Extend,也不用再初始化
    试一下不知能否可以
      

  8.   

    不行!不初始化,不用Extend,走到赋值就进异常!还是报的引用未初始化的收集
      

  9.   

    在所有的table of后面加上INDEX BY BINARY_INTEGER;
    如:Type Tab_Coitems Is Table Of Rec_Coitem INDEX BY BINARY_INTEGER;
    然后去掉初始化的代码,和extend相关的代码,直接赋值,然后访问它