Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему не работает цикл forall


alsov1 ©   (2004-10-15 15:54:00) 

Приветствую Мастера!

На этом форуме сказали, что цикл forall работает быстрее при вставке, апдейте, удалении записей

Но у меня он вообще работать не хочет
Процедура вот такая:

CREATE or replace PROCEDURE Tester

is BEGIN
declare
      type TTest is record(
           ID_Z NUMBER(8),
           ID_D NUMBER(8),
           DATA TIMESTAMP(1),
           ZNACH NUMBER,
           SOSI CHAR(1));
           
      type TArrTest is table of TTest;
      rand_arr TArrTest;
      j number;
      data timestamp(1) := systimestamp;
     

begin
 rand_arr := TArrTest();
 rand_arr.extend(50000);
 for i in 1 .. 50000
    loop
     rand_arr(i).id_z := abs(dbms_Random.VALUE(1, 99999999));
     rand_arr(i).id_d := abs(dbms_Random.VALUE(1, 99999999));
     rand_arr(i).DATA := data;
     rand_arr(i).znach := dbms_Random.VALUE;
     rand_arr(i).sosi := dbms_Random.STRING('U', 1);
    end loop;

    forall j in rand_arr.first .. rand_arr.last
        insert into test
                  values (rand_arr(j).ID_Z,
                         rand_arr(j).id_d,
                         rand_arr(j).data,
                         rand_arr(j).znach,
                         rand_arr(j).sosi);
     

 commit;
 end;
end;
/

Говорит вот чего
Ошибка:PLS-00436: implementation restriction: cannot reference fields of BULK In-BIND table of records
 57>                    values (rand_arr(j).ID_Z,
                                ^
Ошибка:PL/SQL: ORA-00904: : invalid identifier
Ошибка:PL/SQL: SQL Statement ignored


alsov1   (2004-10-15 17:51:00) [1]

Ладно, и на том спасибо


Johnmen   (2004-10-15 16:28:00) [2]

Короче...
http://oracle.ukrsat.com/tutorial/openxs.php?n=23
http://www.mid.main.vsu.ru/docs/oracle9/server.901/a90202/pcmus.htm
Это сообщение об ошибке следовало бы сформулировать так: «Ограничение реализации: не поддерживается массовая привязка отдельных полей элементов коллекции, состоящей из объектов или записей». Массовая привязка в Oracle поддерживается только по отношению к коллекциям, основанным на примитивных типах данных.

Или проблемы с поисковиками ?


Reindeer Moss Eater   (2004-10-15 16:17:00) [3]

Для циклов FOR не рекомендуют объявлять переменную индекс цикла.
Запрещено объявлять переменную-индекс цикла для циклов FORALL


Наверх

Титульная страница Поиск, карта сайта Написать письмо