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

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

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

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

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

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

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

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

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

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

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

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

поэто му аш вопрос пока непонятен. Но при прогоне в дебугере формы - можно увидеть иногда чуть -чуть более подробные ошибки.
...
Рейтинг: 0 / 0
03.09.2004, 19:01
    #32680092
Димитрий_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
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
03.09.2004, 19:07
    #32680096
Pavel Zenkevich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
Можно попробовать использовать функции SQLERRM и SQLCODE
...
Рейтинг: 0 / 0
03.09.2004, 19:08
    #32680099
Димитрий_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
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
03.09.2004, 19:19
    #32680111
Димитрий_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
Pavel ZenkevichМожно попробовать использовать функции SQLERRM и SQLCODE
SQLERRM = 'ORA-0000: normal, successful completion'
...
Рейтинг: 0 / 0
06.09.2004, 06:28
    #32680719
Bombat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
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
06.09.2004, 09:57
    #32680840
Димитрий_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
BombatFRM-40735: WHEN-BUTTON-PRESSED триггер вызвал необработанное исключение ORA-20000.

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

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

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

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

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

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

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

Димитрий
...
Рейтинг: 0 / 0
06.09.2004, 12:31
    #32681198
UK0IAI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
версия 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
06.09.2004, 15:47
    #32681693
Димитрий_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
Ситация не поменялась, но стала более интересной
Итак в тестовой форме
Код: 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
06.09.2004, 16:37
    #32681827
Димитрий_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
Сейчас попробовал прикрутить тестовую процедуру к работающей форме.

т.е. создаю кнопку
у нее триггер 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
06.09.2004, 18:33
    #32682123
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
Запутался, простейшая форма (одна кнопка)
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
06.09.2004, 19:12
    #32682182
UK0IAI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
Stax

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

Димитрий_

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

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

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

возможно...следует на уровне сервера ....в локальные переменные пакаджа дополнительно подгрузить сообщения из SQLERRM и SQLCODE. Тогда в Формсе можно будет в триггере зачитать уже их - из переменных.
...
Рейтинг: 0 / 0
06.09.2004, 19:46
    #32682214
Димитрий_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
Ситация очень интересная.
Имеем работающую форму, некорректно обрабатывающую ошибки сервера.
Код: 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
07.09.2004, 15:40
    #32683648
Димитрий_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
Может подскажете какой патч лечит эту проблему.
У меня установлен 9.
От 14 пришлось отказаться (не помню почему).
...
Рейтинг: 0 / 0
07.09.2004, 17:08
    #32683891
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочется видеть ошибки сервера при работе Oracle Forms 6i
2 Димитрий_

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

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

Create_Group(
...
Populate_Group_With_Query

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

Create_Group(
...
Populate_Group_With_Query

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

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

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

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


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