【问题标题】:ORA-02303: cannot drop or replace a type with type or table dependentsORA-02303: 不能用类型或表依赖项删除或替换类型
【发布时间】:2012-07-25 08:45:24
【问题描述】:

我是甲骨文的新手 我尝试将varchar(50) 更改为250

CREATE OR REPLACE TYPE CEQ_OWNER.TYPE_REC_PARAE2
AS OBJECT    
(
    ...
    BONETAT_DESC  VARCHAR2(250),
    ... 
)
/    

我得到 ORA-02303: cannot drop or replace a type with type or tabledependent

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    您尝试修改或删除的对象存在一些依赖关系。

    如果你想跳过这个先删除依赖的对象并尝试删除或修改

    如下图所示

    问候, 阿鲁尔

    【讨论】:

    【解决方案2】:

    试试:

    drop type your_type force;
    

    【讨论】:

    • also: 'drop function my_demo_proc;'以防您从函数中调用旧类型。
    【解决方案3】:

    我也在到处寻找语法,但很难找到文档。从 Codo 链接的页面...注意 FORCE 位于对象名称和 as object 之间

    create or replace type ceq_owner.type_rec_parae2 FORCE as object    
    (
      ...
      BONETAT_DESC  VARCHAR2(250),
      ... 
    )
    / 
    

    【讨论】:

      【解决方案4】:

      还有其他类型或表格取决于您要更改的类型。如果它是依赖类型,那么您可以使用 FORCE 选项来更改类型。

      如果是直接或间接使用该类型的表,则需要创建新类型和新表,迁移所有数据,最后删除并重命名表和类型。

      有关更多信息,请参阅此Oracle documentation

      【讨论】:

      • 有没有办法找到所有类型的用法?
      • 是的,有一张表列出了所有依赖项(即用法):DBA_DEPENDENCIES。
      • 虽然我可以毫无问题地编译我的类型,但我的同事也有同样的错误。她尝试了 TOAD 和 SQL Developer。我们无法弄清楚为什么。你有什么想法吗?
      • 你们可能正在互相锁定。关闭所有 SQL 工具(您和您同事的),启动一个工具,然后重试。
      • 以上链接已失效。这是 Oracle PL/SQL 语言参考docs.oracle.com/cd/E11882_01/appdev.112/e25519/… 的实际链接
      猜你喜欢
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多