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

Oracle嵌套表创建报错ORA-02320/ORA-22913问题求助

问题排查与解决方案

错误原因

触发ORA-22913错误的核心原因是:你定义的product_type对象类型中包含了VarcharList类型的嵌套表属性producttypes,而在创建主表ordersv3时,仅为外层嵌套表order_items指定了存储表,未为内层的producttypes嵌套表属性指定对应的存储表。Oracle要求所有层级的嵌套表都必须明确指定存储表,否则会创建失败。

修正步骤

1. 确保基础嵌套表类型VarcharList已定义

如果之前未定义VarcharList,先执行以下语句:

CREATE OR REPLACE TYPE VarcharList AS TABLE OF VARCHAR2(100);

2. 修改主表创建语句,为内层嵌套表指定存储表

更新ordersv3的创建语句,在外层嵌套表的存储表定义中嵌套指定内层嵌套表的存储表:

CREATE TABLE ordersv3 (
    order_id NUMBER PRIMARY KEY,
    customer_id NUMBER,
    order_items order_items_table 
) 
NESTED TABLE order_items STORE AS order_items_ntttt (
    -- 为product对象中的producttypes嵌套表指定存储表
    NESTED TABLE product.producttypes STORE AS product_types_nt
);

3. 优化建议(非强制但推荐)

product_type中的list_price字段使用VARCHAR2(100)存储价格不符合数据类型规范,建议改为NUMBER类型:

CREATE OR REPLACE TYPE product_type AS OBJECT (
    product_id NUMBER,
    product_name VARCHAR2(100),
    category_name VARCHAR2(100),
    producttypes VarcharList,
    list_price NUMBER -- 替换原VARCHAR2类型
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 10:25:19