Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2
  • 3

ТЕМА: Oracle. Цикл меняет только первую запись

Oracle. Цикл меняет только первую запись 17 июль 2011 04:09 #2213

  • Joker
  • Joker аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 46
  • Спасибо получено: 0
Добрый день!!!

сделал следующее, создал массив и заполнил его данными.
В массиве содержатся 3 записи, по идеи в таблице тоже должны обновится 3 записи, но почему то цикл не шагает
изменяет только первую запись и все... что не так помогите разобраться ?
declare
type t_table is table of varchar2(1000) index by binary_integer;
loTable t_table;

i Number;

begin
loTable(1) := '1212-АДЛ';
loTable(2) := '12121-УКЛ';
loTable(3) := '121212'-УСП;

i:=0;
for i in loTable.first .. loTable.last loop
update table2 set table2.name='Test information' where table2.id=loTable(i);
commit;
end loop;

end;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Цикл меняет только первую запись 17 июль 2011 04:20 #2214

  • Gubin
  • Gubin аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 42
  • Спасибо получено: 0
Лучше так :)
А commit в loop - это зло :)
declare 
type t_table is table of varchar2(1000) index by binary_integer;
loTable t_table;

i Number;

begin
loTable(1) := '1212-АДЛ';
loTable(2) := '12121-УКЛ';
loTable(3) := '121212-УСП';

i := loTable.first;
while i is not null 
loop
dbms_output.put_line(loTable(i));    
i := loTable.next(i);
end loop;
commit;
end;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Цикл меняет только первую запись 17 июль 2011 04:21 #2215

  • Dior
  • Dior аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 41
  • Спасибо получено: 0
Добрый день!
А почему вы не подумали о nested table / varray + forall ???
Ведь намного проще...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Цикл меняет только первую запись 17 июль 2011 04:23 #2216

  • Gubin
  • Gubin аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 42
  • Спасибо получено: 0

nested table / varray + forall


Привет, Dior)
forall не всегда быстрее, чем обычный цикл )

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Цикл меняет только первую запись 17 июль 2011 04:40 #2217

  • Dior
  • Dior аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 41
  • Спасибо получено: 0

forall не всегда быстрее, чем обычный цикл )


Хм... А когда не быстрее?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Oracle. Цикл меняет только первую запись 17 июль 2011 04:41 #2218

update table2 set table2.name='Test information' where table2.id in ('1212-АДЛ', '12121-УКЛ', '121212'-УСП);

С кавычками тебе тут надо разобраться...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3