无APEX应用时,能否通过PL/SQL创建APEX会话调用APEX_DATA_EXPORT?
关于APEX_SESSION.CREATE_SESSION与无APEX应用场景的问题
1. 是否必须创建APEX应用才能使用CREATE_SESSION?
是,APEX_SESSION.CREATE_SESSION的p_app_id参数必须对应一个已存在的APEX应用。APEX会话本质与特定应用绑定,没有合法的应用ID,调用该过程会触发错误(如ORA-20001: Invalid Application ID)。哪怕只是通过PL/SQL调用APEX API,也需要依托一个合法的APEX应用来创建会话。
2. 能否通过PL/SQL创建APEX应用?
可以,APEX 22.1支持通过PL/SQL程序化创建应用,推荐使用APEX_APPLICATION_INSTALL包(专门用于程序化部署),也可使用APEX_APPLICATION.CREATE_APPLICATION过程。
以下是创建基础应用的PL/SQL示例:
DECLARE l_app_id NUMBER; BEGIN -- 创建新APEX应用 l_app_id := APEX_APPLICATION_INSTALL.CREATE_APPLICATION( p_app_name => 'TEMP_API_APP', p_app_alias => 'TEMP_API_APP', p_owner => 'YOUR_WORKSPACE_SCHEMA', -- 替换为你的工作区schema p_theme_id => 42, -- 使用Universal Theme p_theme_style_id => 25 -- 默认样式 ); -- 提交变更并设置当前应用ID APEX_APPLICATION_INSTALL.SET_APPLICATION_ID(l_app_id); COMMIT; DBMS_OUTPUT.PUT_LINE('创建的应用ID: ' || l_app_id); END; /
注意事项:
- 执行代码的用户需要拥有
APEX_ADMINISTRATOR_ROLE或对应工作区的管理员权限。 - 创建应用后无需额外创建页面,调用
APEX_SESSION.CREATE_SESSION时p_page_id填1即可(会话仅验证应用ID合法性,不校验页面是否存在)。
内容的提问来源于stack exchange,提问作者Vitor Mira
相关产品推荐
相关产品推荐

