oracle for函数,oracle分区表述的FOR语句(一)
指定一個分區(qū)除了使用分區(qū)名稱外,很多時候還可以使用FOR語句。
從11g開始,對分區(qū)進行操作的時候,不僅可以使用分區(qū)名稱,還可以使用FOR語句。
在10g中,MERGE RANGE分區(qū)的語句如下:
SQL> SELECT * FROM V$VERSION;
BANNER
----------------------------------------------------------------
Oracle Database10gEnterpriseEdition Release10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE ? ?10.2.0.3.0 ? ? ?Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
SQL> CREATE TABLE T_PART_RANGE
2 ?(ID NUMBER,
3 ?NAME VARCHAR2(30),
4 ?CREATE_DATE DATE)
5 ?PARTITION BY RANGE (CREATE_DATE)
6 ?(PARTITION P1 VALUES LESS THAN (TO_DATE('2009-1', 'YYYY-MM')),
7 ?PARTITION P2 VALUES LESS THAN (TO_DATE('2009-4', 'YYYY-MM')),
8 ?PARTITION P3 VALUES LESS THAN (TO_DATE('2009-7', 'YYYY-MM')));
表已創(chuàng)建。
SQL> ALTER TABLE T_PART_RANGE
2 ?MERGE PARTITIONS P2, P3
3 ?INTO PARTITION P3;
表已更改。
而在11g中,除了使用分區(qū)名稱外,還可以使用FOR語句來代替,比如:
SQL> SELECT * FROM V$VERSION;
BANNER
--------------------------------------------------------------------------------
Oracle Database11gEnterprise Edition Release11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE ? ?11.2.0.1.0 ? ? ?Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> CREATE TABLE T_PART_RANGE
2 ?(ID NUMBER,
3 ?NAME VARCHAR2(30),
4 ?CREATE_DATE DATE)
5 ?PARTITION BY RANGE (CREATE_DATE)
6 ?(PARTITION P1 VALUES LESS THAN (TO_DATE('2009-1', 'YYYY-MM')),
7 ?PARTITION P2 VALUES LESS THAN (TO_DATE('2009-4', 'YYYY-MM')),
8 ?PARTITION P3 VALUES LESS THAN (TO_DATE('2009-7', 'YYYY-MM')));
表已創(chuàng)建。
SQL> ALTER TABLE T_PART_RANGE
2 ?MERGE PARTITIONS
3 ?FOR(TO_DATE('2009-01', 'YYYY-MM')),
4 ?FOR(TO_DATE('2009-04', 'YYYY-MM'))
5 ?INTO PARTITION P3;
表已更改。
這種語法的優(yōu)勢對于范圍分區(qū)還不是很明顯,而對于INTERVAL分區(qū)就十分有意義了。由于INTERVAL分區(qū)的分區(qū)名稱是系統(tǒng)產(chǎn)生的,用戶對INTERVAL分區(qū)最直觀的莫過于存在分區(qū)中的數(shù)據(jù)的范圍,根據(jù)分區(qū)的定義和INTERVAL的設置很容易可以確定分區(qū)的范圍和其中的數(shù)據(jù),但是分區(qū)的名稱就必須通過數(shù)據(jù)字典才能查詢得到。
一個INTERVAL分區(qū)的簡單的例子:
SQL> CREATE TABLE T_PART_INTER
2 ?(ID NUMBER,
3 ?NAME VARCHAR2(30),
4 ?CREATE_DATE DATE)
5 ?PARTITION BY RANGE (CREATE_DATE)
6 ?INTERVAL (INTERVAL '3' MONTH)
7 ?(PARTITION P1 VALUES LESS THAN (TO_DATE('2009-1', 'YYYY-MM')),
8 ?PARTITION P2 VALUES LESS THAN (TO_DATE('2009-4', 'YYYY-MM')));
表已創(chuàng)建。
SQL> INSERT INTO T_PART_INTER
2 ?SELECT ROWNUM, OBJECT_NAME, SYSDATE - ROWNUM * 10
3 ?FROM USER_OBJECTS;
已創(chuàng)建9行。
SQL> COMMIT;
提交完成。
SQL> ALTER TABLE T_PART_INTER
2 ?MERGE PARTITIONS
3 ?FOR(TO_DATE('2009-10', 'YYYY-MM')),
4 ?FOR(TO_DATE('2010-1', 'YYYY-MM'));
表已更改。
總結
以上是生活随笔為你收集整理的oracle for函数,oracle分区表述的FOR语句(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迅为IMX6ULL开发板Linux下电容
- 下一篇: [RK3288][Android7.1]