powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / apex_collection вне апекса
4 сообщений из 4, страница 1 из 1
apex_collection вне апекса
    #37875928
EDUARD_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем в PL/SQL девелопере использую апексовую коллекцию. так удобно.

могу создавать, запихивать туда данные.

но во время запуска
Код: plsql
1.
apex_collection.create_collection_from_query('TEST', dbms_sql_cursor_id);



выводит ошибку.

авторORA-20104: create_collection_from_query Error:ORA-20001: Invalid parsing schema for current workspace ID

Вот собственно пакет для авторизации в апексе, что еще нужно прописать API APEX чтобы он нормально работал вне своей среды?
может кто сталкивался? не?

Код: 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.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
create or replace package MY_APEX is
  
  LOGIN_NAME CONSTANT MP_USERS.USERNAME%TYPE := 'TEST';
  PASSWORD CONSTANT MP_USERS.PASSWORD%TYPE := 'TEST';
  APP_ID CONSTANT VARCHAR2(3) := '100';
    
  procedure login(
    pSessionId in out nocopy apex_workspace_sessions.apex_session_id%type
  );
  
  procedure logout(
    pSessionId in out nocopy apex_workspace_sessions.apex_session_id%type
  );

end MY_APEX;

/

create or replace package body MY_APEX is

  procedure login(
    pSessionId in out nocopy apex_workspace_sessions.apex_session_id%type
  ) is
    vc_arr OWA.vc_arr;
  begin
    /* ЕСЛИ HTTP СРЕДА ОТСУТСВУЕТ
     * Используется как заплатка к пакету OWA_UTIL
     */
    vc_arr(1) := 'TEST';
    OWA.init_cgi_env(vc_arr);
    
    wwv_flow_api.set_security_group_id(
      nvl(wwv_flow_application_install.get_workspace_id(),3167627337932591)
    );

    if pSessionId is null then
      pSessionId := apex_custom_auth.get_next_session_id();

      apex_custom_auth.login(
          p_uname => LOGIN_NAME,
          p_password => PASSWORD,
          p_session_id => pSessionId,
          p_app_page => APP_ID,
          p_entry_point => null,
          p_preserve_case => null
      );
    else
      declare
        l_session char(1);
      begin
        select null into l_session
          from apex_workspace_sessions s
         where apex_session_id = pSessionId;
      exception when no_data_found then
        raise_application_error(-20009, 'Invalid Session ID!');
      end;
    end if;

    apex_custom_auth.set_session_id(pSessionId);
    apex_custom_auth.set_user(LOGIN_NAME);
    apex_application.g_flow_id := APP_ID;
  end;

  procedure logout(
    pSessionId in out nocopy apex_workspace_sessions.apex_session_id%type
  ) is
  begin
    if pSessionId is not null then
      wwv_flow_api.set_security_group_id(
        wwv_flow_application_install.get_workspace_id
      );

      apex_custom_auth.set_session_id(pSessionId);
      apex_custom_auth.set_user(LOGIN_NAME);
      apex_application.g_flow_id := APP_ID;
      
      apex_custom_auth.remove_session;
      pSessionId := null;
    end if;
  end;
end MY_APEX;
...
Рейтинг: 0 / 0
apex_collection вне апекса
    #37875933
EDUARD_2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторnvl(wwv_flow_application_install.get_workspace_id(),3167627337932591)
заменить на
авторwwv_flow_application_install.get_workspace_id()

забыл убрать свой номер воркспейса
...
Рейтинг: 0 / 0
apex_collection вне апекса
    #37882452
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD_2В общем в PL/SQL девелопере использую апексовую коллекцию. так удобно.
Коллекции апекса существуют, чтобы хранить данные вне контекста текущей сессии oracle.
В данном случае, в одном окне PL/SQL дев. сессия одна, необходимости использовать коллекции апекса нет.
Используйте коллекции oracle. Или по-честному напишите то АПИ, которое вам нравится.

Пользование недокументированным апи требует несколько более серьезных оснований.
...
Рейтинг: 0 / 0
apex_collection вне апекса
    #37882513
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я все же выложу код, чтобы был под рукой на случае чего, т.к. в целом могут возникнуть актуальные задачи с другим API

Код: 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.
declare 
  p_schema varchar2(30);
  p_app_id number := 103;
begin
  -- grant APEX_ADMINISTRATOR_ROLE to user
  -- alter user user default role apex_administrator_role
  
  -- apex 4.1
  select t.schema into p_schema
  from dba_registry t
  where comp_id = 'APEX';
  
  /*apex_application.G_PUBLIC_USER := 'APEX_PUBLIC_USER';
  for c1 in ( select workspace_id
              from apex_applications
              where application_id = p_app_id ) loop

     apex_util.set_security_group_id( p_security_group_id => c1.workspace_id );
     exit;
  end loop;*/

  apex_custom_auth.login(
          p_uname => 'user',
          p_password => 'password',
          p_app_page => p_app_id
  );
  
  execute immediate( 'declare param number; begin '
                  || '  param := ' || p_schema || '.WWV_FLOW_META_DATA.FETCH_FLOW_INFO;'
                  || 'end;' );
end;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / apex_collection вне апекса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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