powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Текст сообщения об ошибке в процедуре или execute block
13 сообщений из 13, страница 1 из 1
Текст сообщения об ошибке в процедуре или execute block
    #39257081
sysdba22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

В хранимой процедуре или execute block, внутри обработчика ошибок, можно как-то получить текст сообщения
об ошибке? Или все что доступно это числовой код?

Для чего это. Если обновляем десять полей одним запросом и на каком-то из них произошло нарушение
ссылочной целостности мы сможем узнать на каком именно?
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39257091
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кучно пошли.
косяком прям.
то sasha27, то sysdba22
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39257160
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysdba22Если обновляем десять полей одним запросом и на каком-то из них произошло нарушение
ссылочной целостности мы сможем узнать на каком именно?

И что ты с этим знанием в процедуре делать будешь? Пусть исключение улетает на клиент, а
там ты спокойно разберёшь статус-вектор в котором и будет указатель на имя сработавшего FK.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39257283
Dimitry SibiryakovИ что ты с этим знанием в процедуре делать будешь?
Можно писать в таблицу с ошибками, можно отдавать клиенту:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
execute bloсk returns (Id integer, Error blob sub_type text) as 
begin
  for select Id from DocsForHandle into :Id do
  begin
    begin
      execute procedure HandleDoc(:Id);
      Error = null;
      suspend;
      when any do
      begin
        Error = exception_text;
        LogDocError(id, Error);
        suspend;
      end; 
      delete from DocsForHandle where Id = :Id;
    end;
  end;
end;
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39257321
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovsysdba22Если обновляем десять полей одним запросом и на каком-то из них произошло нарушение
ссылочной целостности мы сможем узнать на каком именно?

И что ты с этим знанием в процедуре делать будешь? Пусть исключение улетает на клиент, а
там ты спокойно разберёшь статус-вектор в котором и будет указатель на имя сработавшего FK.


приходится вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 DEBUG_POINT = 100;
 .....
 DEBUG_POINT = 500;
 .....
 DEBUG_POINT = 1000;
 suspend;
 
when any
   do in autonomous transaction
      do begin
          insert into DEBUG_MSG values ( '>> VERY_VERY_CRASY_PROC' );
          -- вход
          insert into DEBUG_MSG values ( 'ID_KEY:' || coalesce( :ID_KEY, '?'));
          insert into DEBUG_MSG values ( 'ID_POINT:' || coalesce( :ID_POINT, '?'));
          insert into DEBUG_MSG values ( 'DEBUG_POINT:' || coalesce( :DEBUG_POINT, '?'));
          insert into DEBUG_MSG values ( '<< VERY_VERY_CRASY_PROC' );
         end

end



а все потому, что DBA умный, а пользователи не очень. и им детальное сообщение показывать смысла нет.
а сообщение увидеть нужно. иногда - через полгода после события.
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39257325
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorа все потому, что DBA умный, а пользователи не очень. и им детальное сообщение показывать
смысла нет.
а сообщение увидеть нужно. иногда - через полгода после события.
Тому, кто умный, хватит и GDSCODE. А для того, кто не очень, серверное сообщение об ошибке
в любом случае выглядит как "многа нипанятных букафф".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39257340
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийто sasha27, то sysdba22Мы-то знаем, что Саше 28 уже.
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39258045
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovpastorа все потому, что DBA умный, а пользователи не очень. и им детальное сообщение показывать
смысла нет.
а сообщение увидеть нужно. иногда - через полгода после события.
Тому, кто умный, хватит и GDSCODE. А для того, кто не очень, серверное сообщение об ошибке
в любом случае выглядит как "многа нипанятных букафф".


И где тут непонятное
Код: sql
1.
Документ Приказ о приеме на работу №1 дата 01.09.2015 закрыт от изменений.



Скрипт должен выполнить работу не останавливаясь выполняя, первый закон транзакция должна быть как можно короткой.
А в каком из триггеров это произошло пуфигу. Репликация должна сделаться по максимуму и с нормальными сообщениями, а не в виде цифрового кода.
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39258049
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикРепликация должна сделаться по максимуму и с нормальными сообщениями

Репликация вообще не должна вызывать ошибок ни при каких обстоятельствах. Иначе что-то
очень неладно в датском королевстве базе и/или приложении.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39258074
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикРепликация должна сделаться по максимуму и с нормальными сообщениями

Репликация вообще не должна вызывать ошибок ни при каких обстоятельствах. Иначе что-то
очень неладно в датском королевстве базе и/или приложении.


А вот внятные сообщения и помогают найти неточности. Если админам руки не к тому месту прилепили и они лезут в базу, тут только сообщение поможет.

В одной базе сделали делать документ в другую его уже реплицировали. Внесли пару строк во второй базе. В первой черт дернул оператора удалить этот документ. Началась репликация и надо внятное сообщение "удаление не возможно с человеческим текстом о причине" и еще много каких операций еще произойдет тут не надо объяснять... Это конфликты операторов, человеческий фактор.
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39258078
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикЭто конфликты операторов, человеческий фактор.
Да щаззз... Это надо руки отрывать тому, кто поставил в очередь на репликацию неготовый
документ и тому, кто разрешил его редактирование левым людям.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39258088
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикЭто конфликты операторов, человеческий фактор.
Да щаззз... Это надо руки отрывать тому, кто поставил в очередь на репликацию неготовый
документ и тому, кто разрешил его редактирование левым людям.


Твои слова да богу б у уши.
...
Рейтинг: 0 / 0
Текст сообщения об ошибке в процедуре или execute block
    #39258094
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикТвои слова да богу б у уши.
Ну, если базу бог проектировал и он же приложение дизайнил, то да - ему в... уши, да...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Текст сообщения об ошибке в процедуре или execute block
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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