在Oracle

时间:2015-07-23 13:35:06

标签: oracle types

我有这么简单的程序和TYPETEST表类型。

create or replace PROCEDURE TESTPROCEDURE (dayName out TYPETEST )IS 
BEGIN
dayName(1):='Monday';
dayname(2):='1';
dayname(3):='good';
END TESTPROCEDURE; 
CREATE OR REPLACE TYPE TYPETEST AS TABLE OF  varchar2(50);

它正常编译,但是当我运行它时,它会给出这样的异常:

  

" ORA-06531:参考未初始化的集合"。

你能帮我吗?

1 个答案:

答案 0 :(得分:3)

初始化dayName并将其扩展(每次为1或开头为3):

CREATE OR REPLACE PROCEDURE TESTPROCEDURE (dayName out TYPETEST )IS
BEGIN
  dayName := typetest();
  dayName.extend(3);
  dayName(1):='Monday';
  dayname(2):='1';
  dayname(3):='good';
END TESTPROCEDURE;

测试:

declare 
  t typetest;
begin 
  TESTPROCEDURE(t); 
  for i in 1..t.count() loop
    dbms_output.put_line(t(i));
  end loop;
end;

输出:

Monday
1
good