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

IBM Db2 8.2.9.

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


С уважением, Семен Попов
...
Рейтинг: 0 / 0
10.02.2011, 13:00
    #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
10.02.2011, 14:06
    #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
11.02.2011, 11:34
    #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
11.02.2011, 17:01
    #37112015
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличить длину сообщения об ошибке
Создайте глобальную переменную VARCHAR(1024) и всякий раз запихивайте в нее сообщение перед тем как кинуть эксепшн. Ну, а потом показывайте пользователю.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Увеличить длину сообщения об ошибке / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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