• ORA-02303: 无法使用类型或表的相关性来删除或取代一个类型


    问题描述:

             在日常开发中,我们会创建Type和对应的TAB供其他数据库对象使用,如果对象引用了该Type,则对其修改(CREATE OR REPLACE TYPE)时会出现如下错误,ORA-02303: 无法使用类型或表的相关性来删除或取代一个类型 。


    举例:

    SQL> CREATE OR REPLACE TYPE typ_payment_order_result AS OBJECT
      2  (
      3    id                  NUMBER,
      4    id_outgoing_payment VARCHAR2(30),
      5    id_credit           NUMBER,
      6    contract_no         VARCHAR2(20),
      7    good_category       VARCHAR2(100)
      8  )
      9  ;
     10  /
    CREATE OR REPLACE TYPE typ_payment_order_result AS OBJECT
    (
      id                  NUMBER,
      id_outgoing_payment VARCHAR2(30),
      id_credit           NUMBER,
      contract_no         VARCHAR2(20),
      good_category       VARCHAR2(100)
    )
    ;
    ORA-02303: 无法使用类型或表的相关性来删除或取代一个类型

    因为该Type有其他对象引用,故对其进行修改时会出上面的错误,查看其依赖关系,可看到如下的依赖:

    SQL> SELECT t.name,
      2         t.type,
      3         t.referenced_name,
      4         t.referenced_type
      5    FROM all_dependencies t
      6   WHERE t.referenced_name = 'TYP_PAYMENT_ORDER_RESULT';
    NAME                           TYPE               REFERENCED_NAME                                                  REFERENCED_TYPE
    ------------------------------ ------------------ ---------------------------------------------------------------- ------------------
    TAB__PAYMENT_ORDER_RESULT      TYPE               TYP_PAYMENT_ORDER_RESULT                                         TYPE
    TAB_PAYMENT_ORDER_RESULT       TYPE               TYP_PAYMENT_ORDER_RESULT                                         TYPE
    PKG_INSTAN_PAYMENT             PACKAGE            TYP_PAYMENT_ORDER_RESULT                                         TYPE
    PKG_INSTAN_PAYMENT             PACKAGE BODY       TYP_PAYMENT_ORDER_RESULT                                         TYPE
    
    SQL>

    解决办法:

          使用Force选项解决。

    SQL> CREATE OR REPLACE TYPE typ_payment_order_result FORCE AS OBJECT
      2  (
      3    id                  NUMBER,
      4    id_outgoing_payment VARCHAR2(30),
      5    id_credit           NUMBER,
      6    contract_no         VARCHAR2(20),
      7    good_category       VARCHAR2(100)
      8  )
      9  ;
     10  /
    Type created
    
    SQL> 



  • 相关阅读:
    灰度发布
    rabbitmq应用场景
    redis设置cpu核数与内存
    使用word2010发布博客到博客园
    讲师
    UML-6.3-用例-详述示例
    UML-6.2-用例-用例模型/用例/场景关系
    UML-6.1-用例-示例
    数据库增量同步开源软件
    UML-5-进化式需求
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975747.html
Copyright © 2020-2023  润新知