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

PLS-00539/PLS-00538报错:基于base_t创建item_t子类失败如何解决

问题原因

你出现这个报错的核心原因是item_t类型定义(specification)中构造函数的两个参数存在拼写错误,和类型实现(body)中的构造函数参数不匹配,Oracle会判定你在spec里声明的构造函数没有对应实现,同时在body里实现的构造函数没有提前在spec中声明,因此触发PLS-00538和PLS-00539两个关联错误:

PLS-00539: 对象类型体中声明的子程序'ITEM_T'必须在对象类型定义中声明
PLS-00538: 对象类型定义中声明的子程序或游标'ITEM_T'必须在对象类型体中定义

具体错误点

在item_t的类型定义部分,构造函数的两个参数拼写错误:

  • 错写为itmer_rating_agency,正确应为item_rating_agency
  • 错写为item_realease_date,正确应为item_release_date

修复方法

只需要修改item_t类型定义的构造函数部分即可,修正后的完整item_t类型定义代码如下:

CREATE OR REPLACE 
   TYPE item_t UNDER base_t 
    ( item_id NUMBER
    , item_barcode VARCHAR2(20)
    , item_type NUMBER
    , item_title VARCHAR2(60)
    , item_subtitle VARCHAR2(60)
    , item_rating VARCHAR2(8)
    , item_rating_agency VARCHAR2(4)
    , item_release_date DATE
    , created_by NUMBER
    , creation_date DATE
    , last_update_by NUMBER
    , last_update_date DATE
    , CONSTRUCTOR FUNCTION item_t 
    ( oname VARCHAR2
    , name VARCHAR2
    , item_id NUMBER
    , item_barcode VARCHAR2
    , item_type NUMBER
    , item_title VARCHAR2
    , item_subtitle VARCHAR2
    , item_rating VARCHAR2
    , item_rating_agency VARCHAR2
    , item_release_date DATE
    , created_by NUMBER
    , creation_date DATE
    , last_update_by NUMBER
    , last_update_date DATE) RETURN SELF AS RESULT
    , OVERRIDING MEMBER FUNCTION get_name RETURN VARCHAR2
    , OVERRIDING MEMBER FUNCTION to_string RETURN VARCHAR2)
    INSTANTIABLE NOT FINAL;
/

修改后重新执行即可正常创建对象类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:06:05