powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql собеседование
7 сообщений из 32, страница 2 из 2
sql собеседование
    #39278375
max_1923в таком таком условия обрабатывается только одна ошибка
when OTHERS
then err_msg := substr(sqlerrm, 1, 200);
insert into err$load values (load_id,l_code,err_msg);

как сделать, к примеру если при загрузки данных в таблицу несколько ошибок, то чтоб в этом условии добавлялись сразу все ошибки? а не одна

почитай-почитай
...
Рейтинг: 0 / 0
sql собеседование
    #39278432
max_1923
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал через второй, но он все равно только одну ошибку вставляет:(
...
Рейтинг: 0 / 0
sql собеседование
    #39278536
Бельфя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max_1923, речь об этом куске?
Код: plsql
1.
2.
3.
4.
5.
6.
exception when others then
errm := sqlerrm;
when others then
insert into err$log (my_seq.currval,cur_cas.code,'err');

end; 


Фактически ты ведь говоришь ораклу:"Если любая другая ошибка то присвоить переменной errm значение sqlerrm, а если любая другая ошибка , то вставить в err$log следующее...."
...
Рейтинг: 0 / 0
sql собеседование
    #39278544
max_1923
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бельфя,
я пробовал так, но все равно не хочет
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
          
exception 
  when DUP_VAL_ON_INDEX then 
  begin
  err:= substr(sqlerrm, 12, 200);
  insert into log values (err); 
exception
  when OTHERS
  then err := substr(sqlerrm, 12, 200);
  insert into og values (err); 
  commit;
  end;
end;
...
Рейтинг: 0 / 0
sql собеседование
    #39278553
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max_1923,
судя по нику вам 92-93 года и отправлять читать документацию считаю не гуманно :)
...
Рейтинг: 0 / 0
sql собеседование
    #39278559
max_1923
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробую разобраться, все спасибо, тему можно закрывать
...
Рейтинг: 0 / 0
sql собеседование
    #39278706
_lLocust
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max_1923,

max_1923
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare
    v_err VARCHAR2(64);

begin
    for cur_cas in (select * from test1)
    loop
        insert into test2 values(my_seq.nextval,cur_cas.code,cur_cas.name,cur_cas.ch_date,my_seq.currval);
    end loop;

exception when others then
    errm := sqlerrm;
    insert into err$log (my_seq.currval,cur_cas.code,'err');
end; 


...
в таком таком условия обрабатывается только одна ошибка
when OTHERS
then err_msg := substr(sqlerrm, 1, 200);
insert into err$load values (load_id,l_code,err_msg);

как сделать, к примеру если при загрузки данных в таблицу несколько ошибок, то чтоб в этом условии добавлялись сразу все ошибки? а не одна

Потому что обработчик исключений вне цикла.
Вам нужен анонимный блок с обработкой исключений внутри цикла:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
begin
    for cur_cas in (...)
    loop
        begin
            ...
        exception
            ...
        end;
    end loop;
end;



автортогда кто-нибудь объясните пожалуйста. вот вставляю я данные из таблицы test 1 в test2, id- поле будет уникальный id, через сиквенс сделаю, а вот поле load_id это id процедуры, как тогда этот id получить?

что такое "id процедуры"? )))
Предположу что это id идентифицирующий запуск этой процедуры. :
Код: plsql
1.
2.
3.
4.
5.
6.
declare
    vLoadId number;
begin
    vLoadId := sqBlaBlaBla.nextval;
    ...
end;



И то что вы делаете - это как я понимаю ручной привод к уже реализованной ораклом плюшке - DBMS_ERRLOG. О чем писали тут: http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1223564&msg=19438407
Но я с ней не работал, могу и ошибаться.
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql собеседование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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