【问题标题】:What are the Oracle data dictionary views which store metadata about Table Types and Object Types?存储有关表类型和对象类型的元数据的 Oracle 数据字典视图是什么?
【发布时间】:2018-10-31 06:54:14
【问题描述】:

我想找一个表类型被声明为object_type的表。这些类型是独立的 SQL 类型(不是任何 PL/SQL 包或过程专用的)。

我知道我们可以从all_type_attrs 数据字典视图中获取对象类型元数据信息。但找不到连接的视图 表类型及其对应的对象类型。

【问题讨论】:

  • 这个问题和Java语言有什么关系?

标签: sql oracle metadata


【解决方案1】:

有一个数据字典视图user_coll_types(也有all_coll_typesdba_coll_types),其中包含您需要的信息。 elem_type_name 列具有对象类型,type_name 为您提供定义为该类型的 TABLE 的集合。

所以这个查询会帮助你:

select type_name as table_type_name, coll_type
from user_coll_types 
where elem_type_name = 'APC_T'
/

【讨论】:

  • 对不起,我没有得到预期的结果。我使用 type_name=tbltype_name 查询了表 user_coll_types、dba_coll_types、all_coll_types。如我错了请纠正我。这就是我所做的,创建类型 emp_obj_type 作为对象(emp_id 编号,emp_name varchar2(10));创建 emp_tbl_type 是 emp_obj_type 的表; select * from some_table where tbltype_name='emp_tbl_type' and subObject_type_name='emp_obj_type'; 'some_table' 是我要找的,请帮忙
【解决方案2】:

正如 APC 所说,视图称为 ALL_COLL_TYPES(也存在 DBA/USER 版本)。

请注意,Oracle 以大写形式存储标识符名称,除非被引用。

CREATE TYPE emp_obj_type AS OBJECT (
   emp_id NUMBER,
   emp_name VARCHAR2 (10));
/   

CREATE TYPE emp_tbl_type IS TABLE OF emp_obj_type;
/

SELECT type_name, elem_type_name
FROM   all_coll_types
WHERE  type_name = 'EMP_TBL_TYPE'
AND    elem_type_name = 'EMP_OBJ_TYPE';

【讨论】:

    猜你喜欢
    • 2017-01-22
    • 2018-11-04
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2019-03-05
    • 2012-11-09
    相关资源
    最近更新 更多