Skip to Main Content
Counter Package Custom Confirm Dialog Button Labels

Create a session in PL/SQL

How to create a session in PL/SQL

Example

DECLARE
    in_user_id     CONSTANT apex_workspace_apex_users.user_name%TYPE := 'YOUR_APEX_USERNAME';
    in_app_id      CONSTANT apex_applications.application_id%TYPE    :=  YOUR_APPLICATION_ID;
    in_page_id     CONSTANT apex_application_pages.page_id%TYPE      :=  0; -- Or a specific page ID
    v_workspace_id apex_applications.workspace%TYPE;
BEGIN
    -- Find and setup workspace
    SELECT a.workspace
    INTO v_workspace_id
    FROM apex_applications a
    WHERE a.application_id = in_app_id;

    APEX_UTIL.SET_SECURITY_GROUP_ID(p_security_group_id => APEX_UTIL.FIND_SECURITY_GROUP_ID(p_workspace => v_workspace_id));
    APEX_UTIL.SET_USERNAME(p_userid => APEX_UTIL.GET_USER_ID(in_user_id), p_username => in_user_id);

    -- Create APEX session
    APEX_SESSION.CREATE_SESSION(
        p_app_id   => in_app_id,
        p_page_id  => in_page_id,
        p_username => in_user_id
    );

    -- Optional: Set session-level identifiers
    DBMS_SESSION.SET_IDENTIFIER(in_user_id);
    DBMS_APPLICATION_INFO.SET_CLIENT_INFO(in_user_id);

    -- Now you can interact with APEX session state, e.g., set item values
    -- APEX_UTIL.SET_SESSION_STATE ( p_name => 'P1_ITEM_NAME', p_value => 'Some Value' );

END;
/