Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 массив структуры  [new]
nothx
Member

Откуда:
Сообщений: 333
Почему пишет эту ошибку?
Ошибка:ORA-06533: Индекс выходит за пределы счетчика массива

DECLARE
TYPE branch_rec IS RECORD (branchcode VARCHAR2(4), clobdata CLOB);
TYPE varbranch IS VARRAY(25) OF branch_rec;
br varbranch:=varbranch();
BEGIN
br(1).branchcode:='34';
END
26 фев 07, 12:53    [3831895]     Ответить | Цитировать Сообщить модератору
 Re: массив структуры  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116325
br.extend забыли ...
26 фев 07, 12:55    [3831907]     Ответить | Цитировать Сообщить модератору
 Re: массив структуры  [new]
nothx
Member

Откуда:
Сообщений: 333
Вот в таком массиве расширение не нужно, а как длину такого массива определить?
Так как в примере не катит.

TYPE branch_rec IS RECORD (branchcode VARCHAR2(4), clobdata CLOB);
TYPE varbranch IS table OF branch_rec index by binary_integer;
br varbranch;
len integer;
BEGIN
br(1).branchcode:='100';
len:=lenght(br);
END;
26 фев 07, 13:21    [3832085]     Ответить | Цитировать Сообщить модератору
 Re: массив структуры  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
br.Count

PS только это не массив, а index-by таблица...
26 фев 07, 13:24    [3832113]     Ответить | Цитировать Сообщить модератору
 Re: массив структуры  [new]
nothx
Member

Откуда:
Сообщений: 333
Делается присвоение
br(5).clobdata:= 'sdfasdfsdff'; Но счетчик начинается с 1, генерируется ошибка Ошибка:ORA-01403: данных не найдено. Как этого избежать?

for i in 1 .. br.count
loop
if br(i).clobdata is not null then
..........................
end if;
end loop;
26 фев 07, 14:24    [3832533]     Ответить | Цитировать Сообщить модератору
 Re: массив структуры  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
PL/SQL User’s Guide and Reference

PL/SQL Collections and Records

Using Collection Methods

1.
for i IN 1..courses.COUNT loop
   if courses.EXISTS(i) then

2.
i := courses.FIRST;
while i IS NOT NULL loop
  -- do something with courses(i)
  i := courses.NEXT(i); -- get subscript of next element
end loop;

PS доку все таки надо чита-а-ать...
26 фев 07, 14:33    [3832602]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить