Database 如何检查类型';s的从属项是否要删除它们并替换/修改初始类型?
我试图使用以下代码修改一个类型,但它给出了错误代码:“ORA-02303”。我不太了解Oracle或PL/SQL,但我需要解决这个问题;因此,我非常感谢您在这方面的进一步帮助 提前谢谢。代码只是一个示例。但是,我需要先检查它的家属Database 如何检查类型';s的从属项是否要删除它们并替换/修改初始类型?,database,oracle,plsql,Database,Oracle,Plsql,我试图使用以下代码修改一个类型,但它给出了错误代码:“ORA-02303”。我不太了解Oracle或PL/SQL,但我需要解决这个问题;因此,我非常感谢您在这方面的进一步帮助 提前谢谢。代码只是一个示例。但是,我需要先检查它的家属 create or replace type A as object ( x_ number, y_ varchar2(10), member procedure to_upper ); / 我肯定它在数据字典的某个地方可以找到,但不确定它在哪里;而且
create or replace type A as object (
x_ number,
y_ varchar2(10),
member procedure to_upper
);
/
我肯定它在数据字典的某个地方可以找到,但不确定它在哪里;而且你可能有很多不容易解决的依赖关系。但您可以改为修改现有类型:
还有一个
FORCE
选项,但仍然可能使依赖对象无效。查看DBA\u依赖项、所有\u依赖项或用户\u依赖项,视情况而定:
SELECT OWNER, NAME, TYPE
FROM DBA_DEPENDENCIES
WHERE REFERENCED_OWNER = [type owner]
AND REFERENCED_NAME = [type name]
AND REFERENCED_TYPE = 'TYPE'
/
如果在表中使用了该类型,则应该能够通过以下查询查看该类型:
select * from all_tab_columns
where data_type_owner not in ('SYS');
但是我首先要看Alex关于使用ALTER TYPE的建议,这是由Oracle中的基本限制引起的,这是不在数据库中使用Oracle类型的另一个原因
对于“类型”依赖项,您可以:
滴型力李>
然后重新创建类型mytype和类型body
然后下降型mytype_依赖力李>
然后重新创建mytype_依赖的类型和类型主体
对所有依赖类型和引用类型重复此操作
注意:项目3..5是必需的,因为依赖类型无法自动重新编译或“就地”手动编译
对于“表”依赖项,您必须:
使用本文中的指导,其中讨论了三个相关场景
在博客中,不要强行使用DROP,因为它会自动修改表(删除列),上帝知道还有什么可以验证一切。
使用类似于:
ALTER TYPE type_name DROP ATTRIBUTE attr_name INVALIDATE;
ALTER TYPE type_name ADD ATTRIBUTE attr_name varchar2(50) CASCADE;
这将适用于具有表/类型依赖项的类型。您还应该查看表依赖项,因为它们也可以阻止您重新创建类型。请注意,此处可能存在两个问题:a)类型依赖项,或b)表依赖项。