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

    xiaoxiao2021-03-25  91

    问题描述:

             在日常开发中,我们会创建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>

    转载请注明原文地址: https://ju.6miu.com/read-19382.html

    最新回复(0)