求助:动态拼接分区名称 报错了 本帖最后由 dacobby 于 2011-06-15 09:05:07 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 -- 先把 CUSTOMER 表的分区语句贴出来!select dbms_metadata.get_ddl('TABLE','CUSTOMER') from dual;-- 记住,表面上是在已有的分区上添加分区,如果要在分区表的中间部分添加分区,- 其实是将分区表的某个分区 split 为两个或更多的分区! -- 先给个split分区的例子给你看吧:Alter table dept split partition d1 at (5) into(partition d1a tablespace dept1, partition d1b tablespace dept2);-- 上面的语句将表 dept 的 d1 分区在值为 5 的地方 将其划分成两个分区: d1a、d1b-- 下面是创建 dept 表的语句:create table dept( deptno number(2), dept_name varchar2(30) )partition by range(deptno)( partition d1 values less than (10) tablespace dept1, partition d2 values less than (20) tablespace dept2, partition d3 values less than (maxvalue) tablespace dept3); 只建了一个分区partition CUS_PART1 values less than (to_date('2010-12-31'),'yyyy-mm-dd')) 只是新增一个而已 我只是想动态添加新分区 分区名称为 ‘CUS_PART_’||年份 但是拼接的名称 貌似不行 会报类型错误 -- 理解能力真差!要在分区表中直接添加分区,只能在分区表的未尾去添加,-- 且添加分区时,分区表没有MAXVALUE分区!-- 你就不能先把 CUSTOMER表的建表语句贴出来吗? 工作的机器不让上网 奶奶个熊 打出来太累了 没有maxvalue分区只有 ‘2010-12-31’ 之前一个分区 说明白了么我? 分区名如同表名,不能使用变量或常量来拼接。只能使用PL/SQL中动态SQL来创建 总算被理解了,谢谢动态sql 能说详细点么?可以动态的添加出 名称为 CUS_PART_2011 的分区么 BEGIN --这是添加COS_PART_2012分区,范围是2012-12-31,如果要清加其它分区,自己修改吧 EXECUTE IMMEDIATE 'ALTER TABLE CUSTOMER add PARTITION COS_PART_'|| to_char(SYSDATE + 365, 'yyyy')||' VALUES less than (to_date('''|| to_char(SYSDATE + 365, 'yyyy') || '-12-31'',''yyyy-mm-dd''))';END;/ ubuntu10.04 安装oracle11g R2异常 硬盘写入后如何恢复彻底删除文件 java开发存储过程,如何让结果返回一个或多个记录集,请大家给点建议 更改视图的数据类型 如何将Date型的秒清零? ×××初学oracle,各位大侠给点建议,来者有分!!! iis与ORACLE9i weblogic连接oracle9i出错? 请教各位高手一个关于 ORACLE8i 的安装问题?? 新创建的数据库为何在Enterpise Console的节点上没有出现? 触发器问题 求助各位大鸟级别
select dbms_metadata.get_ddl('TABLE','CUSTOMER') from dual;-- 记住,表面上是在已有的分区上添加分区,如果要在分区表的中间部分添加分区,
- 其实是将分区表的某个分区 split 为两个或更多的分区!
(partition d1a tablespace dept1,
partition d1b tablespace dept2);-- 上面的语句将表 dept 的 d1 分区在值为 5 的地方 将其划分成两个分区: d1a、d1b-- 下面是创建 dept 表的语句:
create table dept(
deptno number(2),
dept_name varchar2(30) )
partition by range(deptno)
( partition d1 values less than (10) tablespace dept1,
partition d2 values less than (20) tablespace dept2,
partition d3 values less than (maxvalue) tablespace dept3);
partition CUS_PART1 values less than (to_date('2010-12-31'),'yyyy-mm-dd'))
只是新增一个而已
-- 理解能力真差!要在分区表中直接添加分区,只能在分区表的未尾去添加,
-- 且添加分区时,分区表没有MAXVALUE分区!-- 你就不能先把 CUSTOMER表的建表语句贴出来吗?
只有 ‘2010-12-31’ 之前一个分区
说明白了么我?
只能使用PL/SQL中动态SQL来创建
动态sql 能说详细点么?
可以动态的添加出 名称为 CUS_PART_2011 的分区么
--这是添加COS_PART_2012分区,范围是2012-12-31,如果要清加其它分区,自己修改吧
EXECUTE IMMEDIATE 'ALTER TABLE CUSTOMER add PARTITION COS_PART_'||
to_char(SYSDATE + 365, 'yyyy')||' VALUES less than (to_date('''||
to_char(SYSDATE + 365, 'yyyy') || '-12-31'',''yyyy-mm-dd''))';
END;
/