Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Сообщения исключений во время выполнения
Сообщения исключений во время выполнения
Некоторые улучшения версии 1.5 по обработке сообщений исключений обеспечивают больше возможностей написания обработчиков исключений. Статическое сообщение исключения, определенное в CREATE EXCEPTION, во время выполнения может быть заменено на другой текст, обеспечивающий лучший контекст для пользователя, более точно идентифицирующий проблемные данные.
В следующем примере мы используем возможности версии 1.5 по реализации тех же самых правил, что и в двух триггерах предыдущего примера. На этот раз мы поместим эти правила в один триггер и используем сообщения времени выполнения.
Вот исключение:
CREATE EXCEPTION E_REFUSE_ORDER 'Operation refused. ' ^
/* Операция отвергнута */
А вот триггер:
CREATE TRIGGER BA_SALES0 FOR SALES
ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS
DECLARE VARIABLE ORDER_STATE SMALLINT = 0;
BEGIN
IF (UPDATING AND OLD.ORDER_STATUS = 'shipped') THEN
ORDER_STATE = 1;
IF (
(EXISTS (SELECT ON_HOLD FROM CUSTOMER
WHERE CUST_NO = NEW.CUST_NO
AND ON_HOLD IS NOT NULL)
AND (INSERTING OR ORDER_STATE = 0)) THEN
ORDER_STATE = 2;
IF (ORDER_STATE = 1) THEN
EXCEPTION E_REFUSE_ORDER 'Order ' || NEW.PO_NUMBER || ' already shipped.';
/* EXCEPTION E_REFUSE_ORDER 'Заказ ' || NEW.PO_NUMBER || ' уже отправлен' */
ELSE
IF (ORDER_STATE = 2) THEN
EXCEPTION E_REFUSE_ORDER
'Order '|| NEW.PO_NUMBER ||'. Customer ' || NEW.CUST_NO || ' is on hold.';
/* 'Заказ '|| NEW.PO_NUMBER ||'. Покупатель ' || NEW.CUST_NO || ' заблокирован'; */
END ^
В массиве состояния ошибки клиент получит имя исключения вместе с сообщением времени выполнения.
- Права для выполнения резервного копирования
- Улучшенное время отклика для версии SuperServer
- Упражнения для самостоятельного выполнения
- Часы в Windows показывают неправильное время
- Глава 7. Дата и время
- Сообщения об ошибках gsec
- Глава 18 Время
- 1.4.1. Кодирование во время выполнения
- Генерирование исключений
- Время и дата
- Время
- ГЛАВА 4 Обработка исключений