powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Увеличить длину сообщения об ошибке
5 сообщений из 5, страница 1 из 1
Увеличить длину сообщения об ошибке
    #37108555
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем!

IBM Db2 8.2.9.

Есть предвставочный триггер, в котором я делаю проверки и в случае неудачи генерирую ошибку. Например,
Код: plaintext
1.
SIGNAL SQLSTATE '75001' SET MESSAGE_TEXT = 'Удаление записи JR_SZV13RELUNCT (Бесконтактный прием) приводит к нарушению ссылочной целостности с JR_SZV13 (Журнал регистрации)!';
Но пользователю сообщение выдается обрезанным (у меня 70 символов). Что делаю не так и где подкрутить?


С уважением, Семен Попов
...
Рейтинг: 0 / 0
Увеличить длину сообщения об ошибке
    #37108858
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот пример триггера
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create trigger JRSZV13_UPDB_TOJP
before update of REGDAT, DOCCNT on JR_SZV13
referencing new as n
for each row mode DB2SQL
begin atomic
 declare tr_prsdat date;
 declare tr_prscnt integer;
 -- Считываем мин. дату обработки и суммарное количество обраб. документов
 set (tr_prsdat,tr_prscnt)=(select min(PRSDAT),sum(PRSCNT) from JP_SZV13 where JRID=n.JRID);
 -- дата регистрации не может быть больше даты обработки
 -- суммарное кол-во обработанных документов не может быть больше кол-ва документов в пакете
 if (tr_prsdat<n.REGDAT) or (tr_prscnt>n.DOCCNT) then
   SIGNAL SQLSTATE '75002' SET MESSAGE_TEXT = 'Изменение записи JR_SZV13 (Журнал регистрации) приводит к нарушению логики хранения данных с JP_SZV13 (Журнал обработки)!';
 end if;
end	
@
А вот сообщение об ошибке. См. вложение. Текст ошибки обрезается.
...
Рейтинг: 0 / 0
Увеличить длину сообщения об ошибке
    #37109086
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если изменить запись таблицы из Центра управления, то получаю текст ошибки еще короче:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Программа генерирует ошибку с текстом диагностики: "Изменение 
записи JR_SZV13 (Журнал регистр".  SQLSTATE=75002

Объяснение: 

Эта ошибка или предупреждение возникает в результате выполнения 
функции RAISE_или оператора SIGNAL SQLSTATE в триггере.  Значение 
SQLSTATE, начинающееся с '01' или '02', означает 
предупреждение.  

Действия пользователя: 

Обратитесь к документации по этой программе.  

 sqlcode :  -438, +438 

 sqlstate :  application-defined 

Можно ли что-то подкрутить?
...
Рейтинг: 0 / 0
Увеличить длину сообщения об ошибке
    #37110860
Vladimir Kiselev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Semen Popov,

В доке пишут:
"SET MESSAGE_TEXT =
Specifies a string that describes the error or warning. The string is returned in the sqlerrmc field of the SQLCA. If the actual string is longer than 70 bytes, it is truncated without warning . "
...
Рейтинг: 0 / 0
Увеличить длину сообщения об ошибке
    #37112015
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создайте глобальную переменную VARCHAR(1024) и всякий раз запихивайте в нее сообщение перед тем как кинуть эксепшн. Ну, а потом показывайте пользователю.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Увеличить длину сообщения об ошибке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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