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

Oracle APEX含嵌套集合/自定义对象类型表INSERT报错排查

Oracle INSERT语句报错排查

原始问题语句

当前使用的插入语句如下:

insert into person values(312,'john','doe',to_date("10.10.2000"),COLECTION_OF_CONTACTS('123123'),ADRESA('city','street','123','123'),'first_floor')

结合给出的表结构、自定义类型定义,语句存在以下核心错误:

错误点说明

  • 表名错误:要写入的目标表名为UKLIZECKA,语句中写的person不存在,会直接触发「表或视图不存在」报错。
  • 引号使用错误:Oracle中字符串、日期字面量必须用单引号包裹,双引号仅用于标记大小写敏感/带特殊字符的对象名。语句中to_date("10.10.2000")的日期串用了双引号,Oracle会将10.10.2000识别为列名,直接触发ORA-00984: 列不允许在此处报错。同时to_date必须显式指定日期格式掩码,避免依赖会话默认NLS参数导致日期解析错误。
  • 外键约束前置依赖不满足:UKLIZECKA表存在两个外键约束,插入数据前必须满足:
    1. 传入的ID值312,必须已经在父表ZAMESTNANEC的ID列中存在
    2. 传入的OBLAST_UKLIDU_ID值'first_floor',必须已经在父表OBLAST_UKLIDU的ID列中存在
      不满足任意一项都会触发外键完整性约束报错。
  • (非阻塞但建议修正)类型名拼写错误:定义的嵌套表类型名COLECTION_OF_CONTACTS存在拼写失误(正确拼写为COLLECTION_OF_CONTACTS,少写了一个L),如果类型已经创建成功,当前插入语句保持和类型名一致的拼写即可,但建议后续修正避免后续开发混淆。

修正后可执行语句

INSERT INTO UKLIZECKA (
    ID,
    JMENO,
    PRIJMENI,
    DATUM_NAROZENI,
    KONTAKT_UKLIZECKA,
    ADRESA,
    OBLAST_UKLIDU_ID
) VALUES (
    312,
    'john',
    'doe',
    to_date('10.10.2000', 'dd.mm.yyyy'),
    COLECTION_OF_CONTACTS('123123'),
    ADRESA('city','street','123','123'),
    'first_floor'
);

注意:执行上述语句前,请先确认两个外键关联的父表中已经存在对应关联值,否则依然会触发外键报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:30:59