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

创建PL/SQL对象类型时遇编译错误,请求排查解决

PL/SQL对象类型编译错误排查:PLS-00320及PLS-00905

问题根源

Student类型编译报错PLS-00320的核心原因是属性名与引用的对象类型名重名。PL/SQL对标识符大小写不敏感,你在Student类型里定义了名为address的属性,同时它的类型又是Address对象类型,这会让编译器无法正确解析属性的类型声明,直接终止编译。Course类型的PLS-00905错误只是因为依赖的Student类型无效,只要修复Student的问题,Course就能自动正常编译。

修复后的代码

-- 地址对象类型(原代码无问题,保留)
CREATE OR REPLACE TYPE Address AS OBJECT (
    city VARCHAR2(15),
    state VARCHAR2(15),
    pin NUMBER(6)
);

-- 修改属性名,避免与类型名冲突(将address改为addr)
CREATE OR REPLACE TYPE Student AS OBJECT (
    id NUMBER(3),
    fName VARCHAR2(10),
    lName VARCHAR2(10),
    dob DATE,
    phone NUMBER(10),
    addr Address  -- 这里修改了属性名
) NOT FINAL;

-- 依赖Student的Course类型,修复Student后可正常编译
CREATE OR REPLACE TYPE Course UNDER Student (
    dept VARCHAR2(20),
    sem VARCHAR2(20)
);

错误信息回顾

Student类型编译错误

Warning: Type created with compilation errors.
LINE/COL ERROR


0/0 PL/SQL: Compilation unit analysis terminated
7/9 PLS-00320: the declaration of the type of this expression is incomplete or malformed

Course类型编译错误

Warning: Type created with compilation errors.
LINE/COL ERROR


0/0 PL/SQL: Compilation unit analysis terminated
1/19 PLS-00905: object SYS.STUDENT is invalid

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:25:21