2015-07-23 5 views
0

У меня есть такая простая процедура и тип таблицы TYPETEST.Инициализация типов таблиц в Oracle

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: Ссылка на неинициализированного коллекции".

Помогите мне пожалуйста?

ответ

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 
Смежные вопросы