zoukankan      html  css  js  c++  java
  • 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> 



  • 相关阅读:
    AtCoder Beginner Contest 167
    AtCoder Beginner Contest 166
    AtCoder Beginner Contest 165
    AtCoder Beginner Contest 164
    AtCoder Beginner Contest 163
    AtCoder Beginner Contest 162
    AtCoder Beginner Contest 161
    AtCoder Beginner Contest 160
    AtCoder Beginner Contest 159
    自定义Mybatis自动生成代码规则
  • 原文地址:https://www.cnblogs.com/alen-liu-sz/p/12975747.html
Copyright © 2011-2022 走看看