Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Получение значения item внутри базы по id сессии / 5 сообщений из 5, страница 1 из 1
26.08.2014, 16:31
    #38729274
Gustly
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения item внутри базы по id сессии
Добрый день.

Столкнулся с проблемой. В определенной сессии есть значение item. Его нужно получить внутри базы простым способом.
Сложный способ выглядит так:
Код: sql
1.
select * from APEX_040200.WWV_FLOW_DATA q where 1=1 and item_name = 'P14_STATUS' and flow_instance = '10546679564453'


Нужна какая-нибудь функция, которая мне бы возвращала значение.
v()
get_session_state
не подходят, пустоты возвращают, так как делаю это из базы.

Знает кто-нибудь?
...
Рейтинг: 0 / 0
03.09.2014, 15:37
    #38736393
EDUARD_2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения item внутри базы по id сессии
Gustly,

Код: plsql
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
create or replace procedure copy_apex_session_env
  ( p_session_id apex_workspace_sessions.apex_session_id%type
  , p_app_id apex_applications.application_id%type )
as
  l_session apex_workspace_sessions%rowtype;
  l_app_id apex_applications.application_id%type;
  vc_arr OWA.vc_arr;
begin    
  vc_arr(1) := 'TEST';
  OWA.init_cgi_env(vc_arr);
    
  begin
    select * into l_session
      from apex_workspace_sessions s
     where apex_session_id = p_session_id;
  exception
    when no_data_found then
      raise_application_error(-20001, 'Invalid Session ID!');
  end;

  begin
    select application_id into l_app_id
      from apex_applications
     where application_id = p_app_id
       and workspace_id = l_session.workspace_id;
  exception
    when no_data_found then
      raise_application_error(-20002, 'Invalid Application ID!');
  end;
  
  wwv_flow_api.set_security_group_id(
    wwv_flow_application_install.get_workspace_id()
  );
  
  apex_custom_auth.login(
      p_uname => 'nobody',
      p_password => '',
      p_session_id => l_session.apex_session_id,
      p_app_page => l_app_id,
      p_entry_point => null,
      p_preserve_case => null
  );
      
  apex_custom_auth.set_session_id(p_session_id => l_session.apex_session_id);
  apex_custom_auth.set_user(l_session.user_name);
  apex_application.g_flow_id := l_app_id;
end;
...
Рейтинг: 0 / 0
03.09.2014, 15:38
    #38736395
EDUARD_2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения item внутри базы по id сессии
сорри за простыню в предыдущем топике, редактировать сообщения не могу...
...
Рейтинг: 0 / 0
03.09.2014, 15:51
    #38736436
EDUARD_2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения item внутри базы по id сессии
не подойдет, только коллекции данной сессии видно.

либо, если установить сначало значение, а потом читать. из-за логина под nobody походу теряется инфа.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
begin
  copy_apex_session_env(5963517419926852, 810);
  apex_util.set_session_state('P35_TEST', 'vvv');
end;

/

select v('P35_TEST') from dual t
...
Рейтинг: 0 / 0
03.09.2014, 18:37
    #38736725
SvDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получение значения item внутри базы по id сессии
Gustly,

Документированной возможности нет.
Реализация аутентификации в апексе постоянно переписывается и зависит от версии и патча.

Как вариант для 4.2, STFG "fetch_into_substitution_cache"
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Получение значения item внутри базы по id сессии / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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