powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как определить номер строки, где происходит ошибка в процедуре
2 сообщений из 2, страница 1 из 1
Как определить номер строки, где происходит ошибка в процедуре
    #33149550
Rodion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Всем !
IDS 9.21
Есть ли метод определения номера строки, где происходит ошибка в процедуре?
или какая команда выполнялась в момент ошибки?
Trace и метод изменения значения какой-л переменной при каждой команде не подходят,
тк процедура вызывается очень часто и должна быстро
отработать. Кроме того она довольно громоздка , и вклинивать куски кода, переопределяющие мою переменную, очень накладно.
Спасибо .
...
Рейтинг: 0 / 0
Как определить номер строки, где происходит ошибка в процедуре
    #33152258
Bill'и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для выявления воспроизводимой ошибки - ServerStudio, а вот если нет и
автор"вызывается очень часто и должна быстро отработать", я использую следующий вариант:

0. Создаю в БД постоянную таблицу для хранения инфо об ошибках, возникающих
в "плохих" но очень важных ХП

1. Создаю при старте приложения _временную_ таблицу _без логирования_
(например с именем tmpSPError) - во-первых с ней работа выполняется быстрее,
во-вторых - в случае отката транзакции при ошибке записи иэ этой таблицы не
пропадут!

2. "Плохую" ХП оформляю следующим образом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE PROCEDURE BLA_BLA...


DEFINE ...

  DEFINE SQL_error_var  SMALLINT;     -- SQL код
  DEFINE ISAM_error_var SMALLINT;     -- ISAM код
  DEFINE error_data_var VARCHAR( 250 ); -- текст ошибки
  DEFINE v_milestone    SMALLINT; -- номер "этапа" :)

  BEGIN
      BEGIN ON EXCEPTION SET SQL_error_var, ISAM_error_var, error_data_var
        INSERT INTO tmpSPError(SQL_error, ISAM_error, error_data)
          VALUES (SQL_error_var, ISAM_error_var, error_data_var);
        RAISE EXCEPTION - 746 ,  0 ,
          "Ошибка в ХП BLA_BLA на этапе " || v_milestone;
      END EXCEPTION;

    LET v_milestone =  1 ;
    .... первый кусок кода
    LET v_milestone =  2 ;
    .... второй кусок кода
   ...
END;

END PROCEDURE;
3. При финише приложения переписываю записи из временной таблицы в
основную...

4. В принципе всё :)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как определить номер строки, где происходит ошибка в процедуре
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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