You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

APEX_COLLECTION.CREATE_COLLECTION外部执行失败:ORA-06501错误求助

ORA-06501错误:APEX_COLLECTION在SQL Developer外部执行失败但Apex内部正常的解决方法

问题描述

在SQL Developer中调试调用APEX_COLLECTION的test123函数时,创建集合触发EXCEPTION_ORA_6501错误。该代码在Oracle Apex内部调用正常,但外部直接执行失败。

函数代码

create or replace NONEDITIONABLE function test123 return number 
is
    coll_name varchar2(20) := 'mycollection123';
begin
    if APEX_COLLECTION.COLLECTION_EXISTS(p_collection_name => coll_name) then
        APEX_COLLECTION.DELETE_COLLECTION(p_collection_name => coll_name);
    End if;
    APEX_COLLECTION.CREATE_COLLECTION(p_collection_name => coll_name);
    return 0;
end;

错误堆栈信息

Connecting to the database SYS AT XEPDB1.
Executing PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '127.0.0.1', '23364' )
Debugger accepted connection from database on port 23364.
Source breakpoint: TEST123.pls:7
Source breakpoint: TEST123.pls:8
Exception breakpoint: WWV_FLOW_COLLECTION_INT.pls:-1, $Oracle.EXCEPTION_ORA_6501, ORA-06501: PL/SQL: program error
ORA-06512: at "APEX_230100.WWV_FLOW_COLLECTION_INT", line 99
ORA-06512: at "APEX_230100.WWV_FLOW_COLLECTION", line 53
ORA-06512: at "APEX_230100.WWV_FLOW_COLLECTION", line 365
ORA-06512: at "SYS.TEST123", line 8
ORA-06512: at line 5
Executing PL/SQL: CALL DBMS_DEBUG_JDWP.DISCONNECT()
Process exited.
Disconnecting from the database SYS AT XEPDB1.
Debugger disconnected from database.

解决方法

核心原因

APEX_COLLECTION依赖Oracle Apex的会话上下文环境,在Apex外部(如SQL Developer直接执行)时,未初始化Apex运行所需的会话信息,导致内部逻辑因缺失上下文抛出PL/SQL程序错误。

具体修复步骤

  1. 初始化Apex会话上下文
    在调用test123函数前,先通过APEX_UTIL.INITIALIZE_USER_SESSION初始化会话环境,示例代码如下:

    BEGIN
        APEX_UTIL.INITIALIZE_USER_SESSION(
            p_user => 'YOUR_DB_USERNAME', -- 替换为实际数据库用户名
            p_page_id => 1 -- 任意有效Apex页面ID,无需实际存在
        );
        DBMS_OUTPUT.PUT_LINE(test123());
    END;
    /
    
  2. 避免使用SYS用户执行
    SYS作为数据库超级用户,Apex内部逻辑对其有访问限制,建议使用普通的Apex工作区用户进行调试和执行。

  3. 清理会话资源(可选)
    若需重复测试,可在执行完成后调用APEX_UTIL.END_USER_SESSION清理会话资源:

    BEGIN
        APEX_UTIL.END_USER_SESSION;
    END;
    /
    

内容的提问来源于stack exchange,提问作者bjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:01:03