(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

LOG ERRORS (протоколировать ошибки)

Источник: akarak

В сервере Oracle Database 10 g Release 2 в операторах DELETE, INSERT, MERGE и UPDATE можно использовать новое предложение LOG ERRORS (протоколировать ошибки). Использование этого предложения в операторах массовой обработки данных позволяет записывать строки, при обработке которых произошли ошибки, и не откатывать весь этот оператор.

create table test_el(pole1 integer, pole2 varchar2(100));

exec dbms_errlog.create_error_log ('test_el','test_el_errlog');

Cоздание таблицы для сохранения записей, отклоненных DML-предложением.

test_el_errlog - создаваемая таблица для логов

test_el - исходная таблица

Выполним оператор, в поле POLE1 пытаемся внести символ 'g'

insert into test_el values ('g','что-то') log errors into test_el_errlog reject limit unlimited;

Вставлено: 0 строк

Как видим вставки не произошло.

А теперь посмотрим сдержимое таблицы test_el_errlog

select * from test_el_errlog;

ORA_ERR_NUMBER$  ORA_ERR_MESG$           ORA_ERR_ROWID$  ORA_ERR_OPTYP$ ORA_ERR_TAG$ POLE1 POLE2

---------------------------------  ---------------------------             -----------------------------   -----------------------------  ------------------------- ---------- -----------

1722                            ORA-01722: invalid number                                 I                                                        g          что-то

ORA_ERR_NUMBER$ - номер ошибки

ORA_ERR_MESG$ - который показывает сообщение об ошибке.

ORA_ERR_ROWID$ - заполняется идентификатором этой ROWID при UPDATE и DELETE

ORA_ERR_OPTYP$ - записывается операция при которой возникла ошибка

ORA_ERR_TAG$ - незнаю назначения

Все столбцы таблицы test_el

В таблицу test_el_errlog (некорректные записи для таблицы test_el) будут записываться все строки, которые нарушают ограничения; например, будут протоколироваться ошибки, вызванные слишком большими значениями столбцов, нарушениями ограничений целостности (ограничения NOT NULL, уникальности, ссылочной целостности и проверочные), ошибки,

возникающие при выполнении триггеров, ошибки преобразования типа столбца подзапроса к типу соответствующего столбца таблицы, ошибки распределения строк по секциям и некоторые ошибки при выполнении оператора MERGE (обновление со вставкой), например, ORA-30926: Unable to get a stable set of rows for MERGE operation - невозможно получить устойчивый набор строк для операции MERGE.

Когда возникает ошибка, строка, вызвавшая ее, протоколируется в таблице "некорректных записей" наряду с номером ошибки, текстом сообщения об ошибке, типом операции (INSERT, UPDATE или DELETE), а также с идентификатором этой строки ROWID (для операций UPDATE и DELETE).

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 20.01.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Personal Edition Named User Plus License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Standard Edition 2 Processor License
Allround Automation PL/SQL Developer - 5 user license
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Все о PHP и даже больше
Delphi - проблемы и решения
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100