ORA-06531: 引用未初始化的收集 的问题解决

今天调试存储过程出现“ORA-06531: 引用未初始化的收集”错误,仔细查找了一下metalink,发现是需要初始化,而以前采用的表结构的都没有作过初始化这个步骤,后来看了一下,是因为声明的方式没有按照表的方式声明,而是自己手工写的字段。先寒一个!
----------------

从metalink上面看到,这种类型应该像下面那样使用:

--Create EMPLOYEE_TYPE
CREATE OR REPLACE type employee_type as object(
      empid number,
      empname varchar2(20),
      job varchar2(20));
/
    --Create EMPLOYEE_TAB_TYPE
    CREATE OR REPLACE type employee_tab_type as table of employee_type ;
/
    --Create DEPARTMENT_TYPE -- using employee_tab_type
    CREATE OR REPLACE type department_type as object(
      deptid number,
      deptname varchar2(20),
      deptlocation varchar2(20),
      emp_tab employee_tab_type);
/

DECLARE

/* Initialize the collection , else you will get ORA-06531: Reference to uninitialized collection */

   my_emp employee_tab_type:=employee_tab_type();
   my_dept department_type;
Begin
   my_emp.extend;     -- 必须指定,否则会报指针越界
   my_emp(1):=employee_type(2,'Savitha','mgr');  -- 如果是record也可以直接赋值employee_type
   my_dept :=department_type(1,'RESEARCH','India',my_emp);
END;

/

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值