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

为何这段简单PL/SQL程序触发ORA-03113通信通道文件结束错误?

自定义对象类型游标循环触发ORA-03113错误

以下是触发错误的PL/SQL代码:

CREATE OR REPLACE TYPE a IS OBJECT
(
    b    integer,
    c     varchar2(10)
);
/
declare
  cursor ca return a is select 1,'e' from dual;
  va a;
begin 
    null;
   for cur in ca
   loop
       DBMS_OUTPUT.PUT_LINE('do nothing');
   end loop;
end;

执行后抛出错误:

ORA-03113: 通信通道文件结束
进程 ID: 803778
会话 ID: 64 序列号: 4181

问题现象

该循环仅处理一条数据,且循环内无实质业务操作,但仍触发了ORA-03113通信中断错误。

测试结论

经测试:

  • 使用包内定义的记录类型替代自定义对象类型时,程序可正常运行
  • 不使用记录/对象类型直接查询时,程序也可正常运行
    仅在使用自定义对象类型作为游标返回类型时会出现此问题,具体原因暂不明确。

内容的提问来源于stack exchange,提问作者Pierre-olivier Gendraud

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:35:28