powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX режим DEBUG криво работают функции с pragma autonomous_transaction;
3 сообщений из 3, страница 1 из 1
APEX режим DEBUG криво работают функции с pragma autonomous_transaction;
    #38312665
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перехожу в апексе в режим отладки (кнопка DEBUG) на нижней панели в приложении. В результате функция, объявленная как pragma autonomous_transaction; коммитит изменения
...
Рейтинг: 0 / 0
APEX режим DEBUG криво работают функции с pragma autonomous_transaction;
    #38312734
Casufi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как проверял
Вот кусок кода:
Код: sql
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.
26.
27.
28.
  SELECT count(*)
  into l_uncommitted
  FROM v$session v
  WHERE v.AUDSID = userenv('sessionid') AND v.TADDR IS NOT NULL;
  
  APEX_DEBUG_MESSAGE.LOG_LONG_MESSAGE(
    p_message => 'КОММИТ: <<'||l_uncommitted||'>>',
    p_level => 1);
  
  trace_dm.WriteLog(message => 'КОММИТ: <<'||l_uncommitted||'>>'); 
      
  l_opr_seq := GetOperSeq4DateAt(
    p_opr => p_opr_id,
    p_dpr => p_opr_dpr,
    p_date => p_opr_dt,
    p_day_place => p_day_place);
    

  SELECT count(*)
  into l_uncommitted
  FROM v$session v
  WHERE v.AUDSID = userenv('sessionid') AND v.TADDR IS NOT NULL;
  
  APEX_DEBUG_MESSAGE.LOG_LONG_MESSAGE(
    p_message => 'КОММИТ: <<'||l_uncommitted||'>>',
    p_level => 1);
  
  trace_dm.WriteLog(message => 'КОММИТ: <<'||l_uncommitted||'>>');  



Где trace_dm - свой пакет, который пишет лог в файл на сервере, а GetOperSeq4DateAt - функция объявленая как return number is pragma autonomous_transaction;

При включенном дебаге в лог файле получаю 1,0, а при выключенном 1,1
...
Рейтинг: 0 / 0
APEX режим DEBUG криво работают функции с pragma autonomous_transaction;
    #38313288
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Casufi,

не подтверждается.

создаём процедуру с автономной транзакцией:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create or replace procedure p 
as
  pragma autonomous_transaction;
  l_dummy number;
begin
  select deptno into l_dummy from dept where deptno = 10 for update;
  dbms_output.put_line('a un:'||dbms_transaction.local_transaction_id);

  commit;
  dbms_output.put_line('a cm:'||dbms_transaction.local_transaction_id);
end;
/



И дальше несколько раз выполняем в SQL Commands:
Код: plsql
1.
2.
3.
4.
5.
6.
begin
 dbms_output.put_line('t be:'||dbms_transaction.local_transaction_id);   
 p;
 dbms_output.put_line('t af:'||dbms_transaction.local_transaction_id);
end;
/



Можно закомментировать вызов процедуры, добавить APEX_DEBUG.enable или COMMIT в разные места кода, но суть одна: при повторных обращениях к серверу APEX выполняет что-то, что начинает транзакцию, и APEX_DEBUG на это не влияет. Предполагать, с чем это связано, пока нет желания. Но фиксации родительской транзакции дочерней автономной не вижу.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / APEX режим DEBUG криво работают функции с pragma autonomous_transaction;
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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