Базы данных Oracle - статьи



             

Комплексное использование специальных и универсальных сообщений об ошибках - часть 2


CREATE OR REPLACE TRIGGER DEMO.TRIGGER_GOODS BEFORE INSERT OR UPDATE OF PRICE ON DEMO.GOODS FOR EACH ROW BEGIN IF :NEW.PRICE <= 0 THEN RAISE_APPLICATION_ERROR(-20001, 'Цена товара "' :NEW.TITLE ' " должна быть больше 0 руб (указана цена ' :NEW.PRICE ' руб)'); END IF; END TRIGGER_GOODS;

В случае цены товара меньшей или равной нулю сервер сгенерирует ошибку, например: ORA-20001: Цена товара "Лейка" должна быть больше 0 руб (указана цена 0 руб)

Клиентское приложение может сразу передать это сообщение пользователю без изменения.

Другой причиной может быть появление ошибки, для которой формирование сообщения не предусмотрено.


Рис. 1. Последовательность формирования сообщения об ошибке базы данных.

Хочется обратить внимание, что даже если в приложении используются только специальные сообщения об ошибках, то использование общей функции для формирования сообщений позволит улучшить структуру программы. При необходимости формат специальных сообщений может иметь поддержку ссылок на справочную систему, рисунки и т.д. Описываемый метод формирования сообщений об ошибках базы данных ориентирован в большей степени на реализацию в клиентском приложении. В то же время он может использоваться на стороне сервера в хранимых процедурах, триггерах таблиц, а так же в системных триггерах для события SERVERERROR базы данных или схемы.




Содержание  Назад  Вперед