powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обработка ошибки
5 сообщений из 5, страница 1 из 1
Обработка ошибки
    #40045685
pirab41
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
У меня есть процедура, вызывая которую, происходит выборка данных.
В процедуре есть обработка исключительной ситуации: если строка пустая - выводится сообщение.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE EXCEPTION NullFio 'Не введено фио';

CREATE PROCEDURE InfInf (FIO VARCHAR(20)) --входной параметр ФИО
RETURNS (DatBorn DATE) --выходной дата рождения
AS BEGIN

IF (:FIO = '') THEN --если возникает исключительная ситуация
BEGIN
INSERT INTO InfError (Proce, Descript) VALUES ('InfInf', 'Не указано ФИО');
--информация об ошибке заносится в журнал ошибок InfError
EXCEPTION NullFio; --на экран выводится сообщение об ошибке
END

--если нет ошибки, то выборка данных
FOR SELECT P.BornDate
FROM People P WHERE P.FIO=:FIO
INTO : DatBorn
DO
SUSPEND;
End;



При возникновении исключительной ситуации необходимо, чтобы на экран выводилось сообщение, что возникла ошибка, и данные об ошибке заносятся в таблицу InfError.
Произвожу запрос:
Код: sql
1.
SELECT * FROM  InfInf('');


Сообщение об ошибке выводится, всё нормально. Даже внизу в SQL редакторе пишет сообщение, что "1 записей было добавлено в таблицу InfError".
Подтверждаю транзакцию, захожу в таблицу InfError, а там нет никаких записей, не отображается.

Помогите пожалуйста, как мне сделать так, чтобы запись об ошибке в таблице InfError отображалась.
Не пойму, где она...
...
Рейтинг: 0 / 0
Обработка ошибки
    #40045708
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
when ... do ...

in autonomius transaction

ексепшн откатывает стайтмент и транзакция коммитит пустоту. либо надо как положено обрабатывать ошибки, либо логрующий статемент должен отработать в другой(автономной транзакции).
...
Рейтинг: 0 / 0
Обработка ошибки
    #40045742
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky
надо как положено обрабатывать ошибки,
Ради интереса - а как положено?
...
Рейтинг: 0 / 0
Обработка ошибки
    #40045790
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Ivan_Pisarevsky
надо как положено обрабатывать ошибки,
Ради интереса - а как положено?
В доке написано, например, тут:
http://www.ibase.ru/files/firebird/langref25rus/index.html#psql-operators-when
...
Рейтинг: 0 / 0
Обработка ошибки
    #40045804
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirab41,

тут написано, как надо и в лог записывать, и exception выдавать
http://www.ibase.ru/files/firebird/langref25rus/index.html#d0e24304
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обработка ошибки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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