【问题标题】:Oracle Datatype ModifierOracle 数据类型修饰符
【发布时间】:2013-09-23 23:00:32
【问题描述】:

我需要能够通过使用 DBA_TAB_COLUMNS 中的列数据来重建表列,因此要开发它,我需要了解每列所指的内容。我希望了解 DATA_TYPE_MOD 是什么——文档 (http://docs.oracle.com/cd/B19306_01/server.102/b14237/statviews_2094.htm#I1020277) 说它是一个数据类型修饰符,但我似乎找不到任何填充此字段的列或任何用虚拟填充此字段的方法柱子。有熟悉这个领域的吗?

【问题讨论】:

    标签: oracle types modifier


    【解决方案1】:

    [all][dba][user]_tab_columns 数据字典视图的Data_type_mod 列在使用REF 数据类型(包含它指向的对象的对象标识符(OID))声明为对对象类型的引用时填充)。

      create type obj as object(
        item number
      ) ;
    
      create table tb_1(
        col ref obj
      )
    
    
      select t.table_name
           , t.column_name
           , t.data_type_mod
       from user_tab_columns t
      where t.table_name = 'TB_1'
    

    结果:

    table_name   column_name   data_type_mod
    -----------------------------------------
    TB_1         COL           REF
    

    【讨论】:

      【解决方案2】:

      Oracle 有一个 PL/SQL 包,可用于生成用于创建表的 DDL。使用它可能会更好。

      请参阅http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_metada.htm#i1019414 上的 GET_DDL

      另请参阅: How to get Oracle create table statement in SQL*Plus

      【讨论】:

      • 是的,我知道这个包。我需要了解这些列的原因是,当我添加列或修改现有列时,我不需要删除和创建表,我只需运行 ALTER。我可以通过比较 DBA_TAB_COLUMNS 的列和我自己的存储所有表列的自定义表中的数据来生成更改。
      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      相关资源
      最近更新 更多