代码之家  ›  专栏  ›  技术社区  ›  Konrad

理解Oracle中的系统命名约定

  •  1
  • Konrad  · 技术社区  · 8 年前

    如中所述 documentation 以开头的名称 SYS_ ORA_ 由Oracle系统使用:

    Oracle使用以开头的系统生成的名称 系统_ 对于 隐式生成的模式对象和子对象以及名称 对于某些Oracle提供的对象。神谕 不鼓励您在明确指定的名称中使用这些前缀 名称解析冲突。

    SYS_P2672
    SYS_P1787
    SYS_P654
    

    分区名中的整数是否有约定 系统_ 2627

    1 回复  |  直到 8 年前
        1
  •  1
  •   Jon Heller TenG    8 年前

    使用分区扩展名称和数据字典,而不是依赖于系统名称。

    语法:

    enter image description here

    例子:

    --Create and populate sample schema.
    --drop table test1;
    
    create table test1(a date)
    partition by range(a)
    interval (numToDSInterval(1, 'DAY'))
    (
        partition p1 values less than (date '2000-01-01')
    );
    
    insert into test1
    select date '2000-01-01' + level
    from dual
    connect by level <= 100;
    
    --Select the partition using a value.
    select * from test1 partition for (date '2000-01-05');
    

    --Must create as a table to convert LONG to CLOB in SQL.
    --(This would be easier in PL/SQL, you can just "TO_CHAR" it.)
    create table temp_convert_long_to_lob as
    select table_name, partition_name, to_lob(high_value) high_value
    from user_tab_partitions
    where table_name = 'TEST1';
    
    --Show some data about the partitions.
    select table_name, partition_name, to_char(high_value) high_value
    from temp_convert_long_to_lob
    order by partition_name;
    
    TABLE_NAME   PARTITION_NAME   HIGH_VALUE
    ----------   --------------   ----------
    TEST1        P1               TO_DATE(' 2000-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
    TEST1        SYS_P3094        TO_DATE(' 2000-01-03 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
    TEST1        SYS_P3095        TO_DATE(' 2000-01-04 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
    TEST1        SYS_P3096        TO_DATE(' 2000-01-05 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')