powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / обработка нескольких ошибок в одну таблице
6 сообщений из 6, страница 1 из 1
обработка нескольких ошибок в одну таблице
    #39278497
max_1923
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет.
Пытаюсь обработать ошибки которыю сыпаются при инсерте, но через исключение обрабатывается только одна ошибка. Как в одном инсерте который происходит обработать все ошибки?
exception
when DUP_VAL_ON_INDEX then
begin
err:= substr(sqlerrm, 12, 200);
insert into errore_log_table values (err_msg);
exception
when OTHERS
then err:= substr(sqlerrm, 12, 200);
insert into errore_log_table values (lrr_msg);
end;
end;
...
Рейтинг: 0 / 0
обработка нескольких ошибок в одну таблице
    #39278499
max_1923
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exception
when DUP_VAL_ON_INDEX then
begin
err:= substr(sqlerrm, 12, 200);
insert into errore_log_table values (err);
exception
when OTHERS
then err:= substr(sqlerrm, 12, 200);
insert into errore_log_table values (err);
end;
end;
...
Рейтинг: 0 / 0
обработка нескольких ошибок в одну таблице
    #39278505
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На каждый оператор повесить блок exception. В цикле - значит, блок должен быть внутри цикла.
...
Рейтинг: 0 / 0
обработка нескольких ошибок в одну таблице
    #39278509
max_1923
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm,а если у меня вставляются все значения одновременно?
for curs in (select * from test) loop

insert into test2 values ..
...
Рейтинг: 0 / 0
обработка нескольких ошибок в одну таблице
    #39278512
max_1923
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот сам запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
declare
  err varchar2(200);

begin
  for cur_cas in (select * from test1) loop
        insert into test2
        values
          (cur_cas.a,
           cur_cas.b,
           cur_cas.c,
           cur_cas.d);
  end loop;
          
exception when DUP_VAL_ON_INDEX 
then 
  begin
  err := substr(sqlerrm, 12, 200);
  insert into errore_log_table  values (err); 
exception
  when OTHERS
  then err := substr(sqlerrm, 12, 200);
  insert into errore_log_table  values (err); 
  commit;
  end;
end;
 
...
Рейтинг: 0 / 0
обработка нескольких ошибок в одну таблице
    #39278524
почитайте про pragma exception init
и про передачу raise из локального блока в родительский, если нужно
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / обработка нескольких ошибок в одну таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]