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;
begin
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;
apex_custom_auth.set_session_id(p_session_id => l_session.apex_session_id);
apex_custom_auth.set_user(l_session.user_name);
wwv_flow_api.set_security_group_id(l_session.workspace_id);
apex_application.g_flow_id := l_app_id;
end copy_apex_session_env;
/Она должна создаваться в схеме разбора приложения (без этого не сработает wwv_flow_api.set_security_group_id). Теперь, чтобы увидеть данные соответствующей коллекции, достаточно вызвать процедуру и выполнить запрос:
exec copy_apex_session_env(p_session_id => &session_id, p_app_id => &app_id); select * from apex_collections where collection_name = 'YOUR_COLLECTION_NAME';

Комментариев нет:
Отправить комментарий