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

Откуда:
Сообщений: 629
Версия оракла 9.2.0.8
    declare
        type tCur is ref cursor;
        vCur    tCur;
        vT      t_STR_TABLE;
    begin
        open vCur for select rowidtochar(rowid) from table_tab;
        loop
            fetch vCur bulk collect into vT;
            dbms_output.put_line(' ' || vT.count);
            exit when vCur%notfound;
            dbms_output.put_line('Обработка записей ');
       end loop;
       close vCur;
    end;
Результат работы 1 строчка:
508
(508 - количество записей в массиве vT, собственно говоря в таблице)
все сделано по Документации
помогите пожалуйста
5 окт 07, 12:01    [4759510]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORACLE при работе с курсором  [new]
dragonx
Member

Откуда: Vladivostok - Москва - ...
Сообщений: 564
а в чем ошибка ORACLE?

что просили, то и сделано,
заполнена плскл таблица vT, в ней 508 записей.
5 окт 07, 12:07    [4759573]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORACLE при работе с курсором  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116351
А что огорчает ? :-)
5 окт 07, 12:07    [4759575]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORACLE при работе с курсором  [new]
Sergey M
Member

Откуда: г. Барнаул
Сообщений: 5462
а Вы думали что она их по штучно собирать в коллекцию будет ?
тогда надо было так
fetch vCur bulk collect into vT limit 1;
5 окт 07, 12:10    [4759602]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORACLE при работе с курсором  [new]
RA\/EN
Member

Откуда:
Сообщений: 3659
NightGhost
Версия оракла 9.2.0.8
    declare
        type tCur is ref cursor;
        vCur    tCur;
        vT      t_STR_TABLE;
    begin
        open vCur for select rowidtochar(rowid) from table_tab;
        loop
            fetch vCur bulk collect into vT;
            dbms_output.put_line(' ' || vT.count);
            exit when vCur%notfound;
            dbms_output.put_line('Обработка записей ');
       end loop;
       close vCur;
    end;
Результат работы 1 строчка:
508
(508 - количество записей в массиве vT, собственно говоря в таблице)
все сделано по Документации
помогите пожалуйста

Да все правильно. Не указан LIMIT, оракл фетчил в коллекцию, пока НЕ ЗАКОНЧИЛИСЬ записи - т.е. до момента, пока vCur%notfound не принял значение TRUE. Что и привело к срабатыванию exit. А какое значение ожидал автор? Варианты TRUE, FALSE, NULL. Подчеркните нужный
5 окт 07, 12:13    [4759619]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORACLE при работе с курсором  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116351
Sergey M
а Вы думали что она их по штучно собирать в коллекцию будет ?
тогда надо было так
fetch vCur bulk collect into vT limit 1;


Кстати в Вашем варианте в коллекции всегда была бы одна запись :-)
5 окт 07, 12:14    [4759632]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORACLE при работе с курсором  [new]
NightGhost
Member

Откуда:
Сообщений: 629
Спасибо большое, свою ошибку понял, учту.
5 окт 07, 12:24    [4759732]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка ORACLE при работе с курсором  [new]
Stax..
Guest
RA\/EN

Да все правильно. Не указан LIMIT, оракл фетчил в коллекцию, пока НЕ ЗАКОНЧИЛИСЬ записи - т.е. до момента, пока vCur%notfound не принял значение TRUE. Что и привело к срабатыванию exit. А какое значение ожидал автор? Варианты TRUE, FALSE, NULL. Подчеркните нужный

подчеркнул и выделил цветом
......
stax
5 окт 07, 15:03    [4761262]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить