powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Хочется видеть ошибки сервера при работе Oracle Forms 6i
24 сообщений из 24, страница 1 из 1
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32676209
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меня вполне устраивает сообощение которое я иногда вижу при отладке.

Похоже что оно возникает только если исполнение оператора, формирующего сообщение об ошибе в пошаговом режиме.

Может можно подкрутить какие-то параметры запуска что бы сообщение формировалось всегда.

Заранее благодарен за ответы.

Димитрий.
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32677504
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже я это уже спрашивал.
И Вы отвечали.
Но может сегодня повезет?
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32678529
Bombat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Димитрий_
Ничего не понял... =(
Какие проблемы? Если ошибки не обработаны в формсе, то он всегда сообщает серверные ошибки.
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32679049
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bombat
Какие проблемы? Если ошибки не обработаны в формсе, то он всегда сообщает серверные ошибки.

В том то и дело, что не сообщает.
Видимо что-то у меня не так настроенно.
Oracle forms
6i patch9
Win98 | Win2k | WinXP
(Все рус
Если возникает ошибка при исполении оператора на сервере выполнение триггера/ процедуры Oracle Forms просто прекращается.

Серверные ошибки Forms иногда выдает при отладке в режиме пошагового исполнения.

Но при каких условиях и как его заставить отображать серверные ошибки в режиме работы не понятно.

У меня во многих процедурах используется процедура генерации ошибки с достаточно информационними сообщениями, а он их не отображает. Гад (Это я про Forms)

Димитрий
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32679255
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть несколько способов спрятать ошибки формса:

1. на уровне формы/блока/айтема вешать триггер on-error из одной строки с NULL;
2. Задать уровень вывода мессаджей....процедурой message_level
3. делать ecxeption в блоках pl/sql (например в триггерах формса) где перехватывать ошбки - но не обрабатывать из ....(без сообщений)
4. на уровне сервера ...хранимых процедур тоже можно делать кучу безобразий...когда все будет спрятано

От настройки формса это никак не зависит, кстати всегда есть команда - display error - которая в рантайме вызыватся клавишей ( у меня cntrl-f1). Или из дефалтного меню - там есть такая строка. Но здесь покажутся ошибки возникшие в результате работы чистого sQL ( запросы, инсерты...). Это (клавиша) зависит от ..файла ресурсов созданного Оракле Терминалом - (компонента самого D2K)

поэто му аш вопрос пока непонятен. Но при прогоне в дебугере формы - можно увидеть иногда чуть -чуть более подробные ошибки.
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32680092
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 UK0IAI

Наконец-то прорвался через формовские ошибки.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 -- ON-ERROR уровень формы 
declare
  lv_errcod   number        := error_code;
  lv_errtyp   varchar2 ( 3 )  := ERROR_TYPE;
  lv_errtxt   varchar2 ( 200 ) := ERROR_TEXT;
  dbmserrcode varchar2 ( 80 ):= DBMS_ERROR_code; 
  dbmserrtext VARCHAR2( 200 ):= DBMS_ERROR_TEXT;
begin
	if lv_errcod not in ( 41377 ,  41042 ,  41017 ,  41316 ,  41014 ) then
		DISPLAY_ERROR;
	end if;
end;
Но проблема в том, что DISPLAY_ERROR ничего не отображает,
хотя управление получает при этом в lv_errtxt содержтся строка 'Popup Menu триггер вызвал необработанное исключение ORA-20002.' Это уже что-то, только хотелось бы получить не номер, а тех исключения, сгенерированный процедурой.

Димитрий
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32680096
Pavel Zenkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно попробовать использовать функции SQLERRM и SQLCODE
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32680099
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 UK0IAI

Наконец-то прорвался через формовские ошибки.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 -- ON-ERROR уровень формы 
declare
  lv_errcod   number        := error_code;
  lv_errtyp   varchar2 ( 3 )  := ERROR_TYPE;
  lv_errtxt   varchar2 ( 200 ) := ERROR_TEXT;
  dbmserrcode varchar2 ( 80 ):= DBMS_ERROR_code; 
  dbmserrtext VARCHAR2( 200 ):= DBMS_ERROR_TEXT;
begin
	if lv_errcod not in ( 41377 ,  41042 ,  41017 ,  41316 ,  41014 ) then
		DISPLAY_ERROR;
	end if;
end;
Но проблема в том, что DISPLAY_ERROR ничего не отображает,
хотя управление получает при этом в lv_errtxt содержтся строка 'Popup Menu триггер вызвал необработанное исключение ORA-20002.' Это уже что-то, только хотелось бы получить не номер, а тех исключения, сгенерированный процедурой.

Димитрий
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32680111
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel ZenkevichМожно попробовать использовать функции SQLERRM и SQLCODE
SQLERRM = 'ORA-0000: normal, successful completion'
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32680719
Bombat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Димитрий_
Что-то все запущено...
Давай чтобы все было понятно сделаем следующее:
1. На сервере создаешь процедуру в которой генеришь исключение
Код: plaintext
1.
2.
3.
4.
5.
PROCEDURE Test
IS
BEGIN
    RAISE_APPLICATION_ERROR(- 20000 ,'Ошибка');
END;
2. Создаешь пустую форму в которую помещаешь только одну кнопку и в триггере WHEN-BUTTON-PRESSED пишешь только имя процедуры:
Код: plaintext
1.
Test;
Затем запускаешь и жмешь на кнопку. Должно выскочить сообщение:
FRM-40735: WHEN-BUTTON-PRESSED триггер вызвал необработанное исключение ORA-20000.
Жду результатов.
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32680840
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BombatFRM-40735: WHEN-BUTTON-PRESSED триггер вызвал необработанное исключение ORA-20000.

А хотелось бы получить сообщение типа
'WHEN-BUTTON-PRESSED триггер вызвал необработанное исключение ORA-20000. 'Ошибка' '.

Задача получить не номер сгениррированного исключения, а его текст.

Номер я уже получаю. См. сообщение от 3 сен 04, 19:08

Димитрий
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32680917
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Bombat
Жду результатов.
Все так и происходит.

Если добавить
Код: plaintext
1.
 -- ON-ERROR уровень формы 
DISPLAY_ERROR;
Получаю сообщение
FRM-42100. Ошибок нет.

Димитрий
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32681044
Bombat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда. Задача оказалась не такой и простой... =)
У меня под 10-кой все работает.
Т.е. в триггере ON-ERROR пишу например:
Код: plaintext
1.
2.
3.
IF DBMS_ERROR_CODE = - 20000  THEN
PAUSE;
END IF;
Все нормально. Происходит остановка. Ну можно туда еще и алерт поставить.
Самое печальное - попробовал под 6-кой - DBMS_ERROR_CODE возвращает значение 0. Помнится была такая трабла, но не помню как мы ее решили. Чуть попозже попробую найти старые исходники.
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32681077
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BombatМда. ...
Чуть попозже попробую найти старые исходники.

Искренне желаю Вам удачи.

Димитрий
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32681198
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версия D2K 6.0.35.3 , база = 8.1.7.4.0

пустая форма где вызывается из кнопки процедура TEST

create or replace procedure test is
begin
RAISE_APPLICATION_ERROR(-20000,'Ошибка');
end test;

в триггере ON-ERROR на форме сделано так:

DISPLAY_ERROR; pause;
message ('1='|| error_code);
message ('2='|| ERROR_TYPE);
message ('3='|| ERROR_TEXT);
message ('4='|| DBMS_ERROR_code);
message ('5='|| DBMS_ERROR_TEXT);
message ('6='|| message_code);
message ('7='|| message_TYPE);
message ('8='|| message_TEXT);

и все сразу будет понятно.

у мeня получилось:

1=0
2=
3=
4=-20000
5=ORA-20000 Ошибка ORA-06512: at "TEst', line 3
6=42100
7=FRM
8=No errors encountered recently

Все логично, процедура display_erroe чудно реагирует только на ошибки операторов DDL ....когда при запросе селект типа ошибся....в синтаксе например

делаем в триггере на кнопку такой скрипт

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare 
	n number;
begin
	
select '*' into n  --туп ошибка будет ....символ в число запишем 
from dual;

exception 
	when others then    ---ну-с, подождем....подождем твою.... 
		message ('11='|| error_code);
		message ('12='|| ERROR_TYPE);
		message ('13='|| ERROR_TEXT);
		message ('14='|| DBMS_ERROR_code);
		message ('15='|| DBMS_ERROR_TEXT);

		message ('16='|| message_code);
		message ('17='|| message_TYPE);
		message ('18='|| message_TEXT);
	
		message ('19='|| sqlcode);
		message ('20='|| sqlerrm);

end ;

первые с 11 по 18 - все пусто - это и логично, а в 19 и 20 - то что нужно.
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32681693
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситация не поменялась, но стала более интересной
Итак в тестовой форме
Код: plaintext
1.
2.
3.
4.
5.
 -- ON-ERROR уровень формы 
declare 
	vN number;
begin
	vN:=n_alert('CAUTION', 'Ошибочная ситация', DBMS_ERROR_TEXT);
end;

Получаем желаемое сообщение от процедуры
Код: plaintext
1.
2.
3.
4.
PROCEDURE Test
IS
BEGIN
    RAISE_APPLICATION_ERROR(- 20000 ,'Сгенирированая Ошибка');
END;
ORA-20000: Сгенирированая Ошибка
ORA-06512: на "NOC.TEST", line 4


Однако в уже разработанной форме при вызове в меню по правой кнопке процедуры сервера на третьем уровне вызова встречается оператор
Код: plaintext
1.
raise_application_error (- 20002 ,
                                'Операция не поддерживается.');

И тогда триггер ON-ERROR уровня формы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare 
  lv_errcod   number        := error_code;
  lv_errtyp   varchar2 ( 3 )  := ERROR_TYPE;
  lv_errtxt   varchar2 ( 200 ) := ERROR_TEXT;
  dbmserrcode varchar2 ( 80 ):= DBMS_ERROR_code; 
  dbmserrtext VARCHAR2( 240 ):= substr(DBMS_ERROR_TEXT, 1 , 240 );
  lv_sqlerrm VARCHAR2( 240 ):=substr( SQLERRM, 1 , 240 );
  lv_sqlcode NUMBER:=SQLCODE;
	vN number;
begin
	if lv_errcod not in ( 41377 ,  41042 ,  41017 ,  41316 ,  41014 ) then
		vN:=n_alert('CAUTION', 'Ошибочная сетуация', dbmserrtext);
	end if;
end;
получет следующие значения переменных

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
lv_errcod            40735 
  lv_errtyp   FRM
  lv_errtxt    Popup Menu триггер вызвал необработанное исключение ORA- 20002 .
  dbmserrcode  - 1403 
  dbmserrtext  ORA- 01403 : данных не найдено
  lv_sqlerrm  ORA- 0000 : normal, successful completion
  lv_sqlcode    0 

А необходимо отобразить текст 'Операция не поддерживается.'

С уважением Димитрий
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32681827
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас попробовал прикрутить тестовую процедуру к работающей форме.

т.е. создаю кнопку
у нее триггер when-botton-pressed
Код: plaintext
1.
2.
3.
begin
test;
end;
процедура на сервере
Код: plaintext
1.
2.
3.
4.
5.
PROCEDURE Test
IS
BEGIN
    RAISE_APPLICATION_ERROR(- 20000 ,'Сгенирированая Ошибка');
END;
дает такую картину
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
lv_errcod            40735 
  lv_errtyp   FRM
  lv_errtxt    WHEN-BUTTON-PRESSED триггер вызвал необработанное исключение ORA- 20000 .
  dbmserrcode  - 1403 
  dbmserrtext  ORA- 01403 : данных не найдено
  lv_sqlerrm  ORA- 0000 : normal, successful completion
  lv_sqlcode    0 
Правда почему-то нет стека вызова в окне отладки.
Только триггер On-Error.
Oracle Forms 6i patch 9
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32682123
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запутался, простейшая форма (одна кнопка)
WHEN-BUTTON-PRESSED
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
	e_code varchar2( 2000 );
begin
 Test_err_forms;
 --exception when others then 
 -- e_code:=sqlerrm; 
 -- e_code:=DBMS_ERROR_TEXT; 
 -- message(substr(e_code,1,instr(e_code,chr(10)))); 
end;

Текст процедурки
Код: plaintext
1.
2.
3.
4.
5.
create PROCEDURE Test_err_forms
IS
BEGIN
    RAISE_APPLICATION_ERROR(- 20000 ,'Сгенирированая Ошибка');
END;

On_error уровня формы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare
  lv_errcod   number        := error_code;
  lv_errtyp   varchar2 ( 3 )  := ERROR_TYPE;
  lv_errtxt   varchar2 ( 200 ) := ERROR_TEXT;
  dbmserrcode varchar2 ( 80 ):= DBMS_ERROR_code; 
  dbmserrtext VARCHAR2( 200 ):= DBMS_ERROR_TEXT;
begin
 --	 message(lv_errcod); 

	if lv_errcod not in ( 40765 ) then
	 message(substr(dbmserrtext, 1 ,instr(dbmserrtext,chr( 10 ))));
	end if;
end;


Жму кнопку, в строке состояния получаю
ORA-20000: Сгенирированая Ошибка
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32682182
Фотография UK0IAI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax

какя понимаю = это все нормально. Строка состояния - это результат процедуры message ....как раз там все и должно быть...нажали кнопку, вызвали еггог - получили мессагу...

Димитрий_

как я понимаю формс перехватывает сообщения об ошибке и в своих функция
выводит из содержимое. При этом, не совсем понятно ведут себя серверные функции....где вроде как должно быть все быть изначально...

складывается впечатление что формс, получив себе код ошибки после это "сбрасывает" что то так , что SQLCODE становится = 0

во всяком случе вы получаете код ошибки и если вы все пользовательские ошибки заведете в прикладной журнал - то тогда все должно получаться почти красиво....

возможно...следует на уровне сервера ....в локальные переменные пакаджа дополнительно подгрузить сообщения из SQLERRM и SQLCODE. Тогда в Формсе можно будет в триггере зачитать уже их - из переменных.
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32682214
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситация очень интересная.
Имеем работающую форму, некорректно обрабатывающую ошибки сервера.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 -- ON-ERROR уровень формы 
declare 
  lv_errcod   number        := error_code;
  lv_errtyp   varchar2 ( 3 )  := ERROR_TYPE;
  lv_errtxt   varchar2 ( 200 ) := ERROR_TEXT;
  dbmserrcode varchar2 ( 80 ):= DBMS_ERROR_code; 
  dbmserrtext VARCHAR2( 240 ):= substr(DBMS_ERROR_TEXT, 1 , 240 );
  lv_sqlerrm VARCHAR2( 240 ):=substr( SQLERRM, 1 , 240 );
  lv_sqlcode NUMBER:=SQLCODE;
	vN number;
begin
	if lv_errcod not in ( 41377 ,  41042 ,  41017 ,  41316 ,  41014 ) then
		vN:=n_alert('CAUTION', 'Ошибочная сетуация', substr(dbmserrtext, 1 ,instr(dbmserrtext,chr( 10 ))));
               -- параметризированный alert. Взято здесь. Классная вещь. 
	end if;
end;
На сервере имеем
Код: plaintext
1.
2.
3.
4.
PROCEDURE Test
IS
BEGIN
    RAISE_APPLICATION_ERROR(- 20000 ,'Сгенирированая Ошибка');
END;

Из триггера 'WHEN-NEW-FORM-INSTANCE' формы
вызывается одна, из этой другая процедура формы, содержащая следующий код.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	  Ftree.Populate_Tree('CLN_TREE');
	  POPULATE_CLIENT_TREE( 0 );
 -- test; -- здесь еще отрабатывает корректно 
 -- получаем сообщение ORA-20000: Сгенирированая Ошибка 
		rg_id:=Create_Group_From_Query( 'TREE_QUERY',
		'select node_open, level, node_name, icon_file, node_value 
			from tst_tree
			where tree_id=0
			start with node_parent is null
  		connect by prior node_value=node_parent 
  	');
 -- test; здесь уже  
 --  DBMS_ERROR_TEXT = 'ORA-24334: для этой позиции дескриптор не существует' 
 -- ERROR_TEXT = 'WHEN-NEW-FORM-INSTANCE триггер вызвал необработанное исключение ORA-20000.' 
 -- без вызова процедуры test ошибки не возникает 


	  errcode := Populate_Group( rg_id );       
 --	test; -- здесь уже не корректно 
 --  DBMS_ERROR_TEXT = 'ORA-01403: данных не найдено
-- ERROR_TEXT = 'WHEN-NEW-FORM-INSTANCE триггер вызвал необработанное исключение ORA-20000.' 

Может кто-то сможет чем-то помочь?

Димитрий
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32683648
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может подскажете какой патч лечит эту проблему.
У меня установлен 9.
От 14 пришлось отказаться (не помню почему).
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32683891
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Димитрий_

Вот теперь вопрос понятен

Для
Forms [32 Bit] Version 6.0.5.35.3 (Production)
тот-же результат
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32683922
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку
если Create_Group_From_Query заменить на

Create_Group(
...
Populate_Group_With_Query

то у меня "стек" ошибок не разрушается
...
Рейтинг: 0 / 0
Хочется видеть ошибки сервера при работе Oracle Forms 6i
    #32683977
Димитрий_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
staxВдогонку
если Create_Group_From_Query заменить на

Create_Group(
...
Populate_Group_With_Query

то у меня "стек" ошибок не разрушается

А ведь помогло!

Огромное спасибо.

Димитрий
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Хочется видеть ошибки сервера при работе Oracle Forms 6i
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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