2010-11-08 1 views
2

У меня есть VARRAY определяется как:Как инициализировать таблицу varray из {TABLE}% ROWTYPE?

declare 
    TYPE tnr_l IS VARRAY(30) of lve%ROWTYPE; 

Я хочу это VARRAY быть инициализированы выборки из базы данных:

select * into tnr_l from lve where type = 'TNR' order by value; 

Но это терпит неудачу с:

.ORA-06550: line 6, column 23: 
PLS-00321: expression 'TNR_L' is inappropriate as the left hand side of an 
assignment statement 

Как могу ли я сделать эту работу?

ответ

8

Вы должны объявить переменную типа tnr_l, а затем вам нужно использовать bulk collect в избранных как в этом примере:

declare 
    type t_dept is varray(100) of dept%rowtype; 
    l_dept t_dept; 
begin 
    select * bulk collect into l_dept from dept; 
    for i in 1..l_dept.count loop 
    dbms_output.put_line(l_dept(i).dname); 
    end loop; 
end; 
+0

Пятно на спасибо! –