Oracle修改对象类型后查询正确属性数对应的元数据表问题
问题根因
Oracle数据字典中存储的对象名默认是大写形式,你创建类型时没有对类型名加双引号强制小写,所以dba_type_attrs里存储的type_name值是TYPE_T1,不是你查询条件里的小写type_t1,过滤条件不匹配导致漏统计了属性。
正确查询方式
-- 类型名用大写匹配即可得到正确的属性数 SELECT count(1) FROM dba_type_attrs WHERE type_name='TYPE_T1';
补充说明
- 如果你需要使用大小写敏感的对象名,创建和查询时都需要给对象名加双引号,比如
CREATE OR REPLACE TYPE "type_t1" AS OBJECT,这种场景才需要用小写作为过滤值 - 若当前查询账号没有
dba_type_attrs的访问权限,也可能出现返回结果不全的问题,无DBA权限时可以换用all_type_attrs(查询当前账号可访问的类型属性)或者user_type_attrs(查询当前账号自有类型的属性)视图查询
内容的提问来源于stack exchange,提问作者Neha
相关产品推荐
相关产品推荐

