问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle建表按日分区,如何truncate当前日期15天前的记录分区

发布网友 发布时间:2022-04-07 17:41

我来回答

6个回答

懂视网 时间:2022-04-07 22:03

DECLARE V_SQL VARCHAR2(1000);
 V_SQL_HEAD VARCHAR2(100);
 V_SQL_TAIL VARCHAR2(10);
 V_DAY VARCHAR2(8); CURSOR C_CUR IS SELECT TO_CHAR((TO_DATE(‘2012-01‘, ‘yyyy-mm‘) + (ROWNUM - 1)), ‘YYYYMMDD‘) S_DATE FROM DUAL
 CONNECT BY ROWNUM <= LAST_DAY(TO_DATE(‘2012-12‘, ‘yyyy-mm‘)) - TO_DATE(‘2012-01‘, ‘yyyy-mm‘) + 1; BEGIN DBMS_OUTPUT.ENABLE(1000000); OPEN C_CUR;
 V_SQL_HEAD := ‘PARTITION BY RANGE(ACCT_DAY)‘ || CHR(13) || ‘(‘;
 V_SQL_TAIL := CHR(13) || ‘)‘;
 DBMS_OUTPUT.PUT_LINE(V_SQL_HEAD);
 LOOP FETCH C_CUR INTO V_DAY; EXIT WHEN C_CUR%NOTFOUND;
 V_SQL := ‘PARTITION PART_‘ || V_DAY || ‘ ‘ || ‘VALUES LESS THAN (‘‘‘ || TO_CHAR((TO_DATE(V_DAY, ‘YYYYMMDD‘) + 1), ‘YYYYMMDD‘) || ‘‘‘)‘;
 DBMS_OUTPUT.PUT_LINE(V_SQL); END LOOP;
 DBMS_OUTPUT.PUT_LINE(V_SQL_TAIL); CLOSE C_CUR; END;
技术分享

      该语句执行之后的效果就是生成了2012年一年的分区,不重不漏。具体情况具体修改。勿喷。

oracle建表时按天分区的自动生成语句

标签:

热心网友 时间:2022-04-07 19:11

--建表
create table t_temp_01 (
t_date varchar2(10),
t_num number(10)
)
partition by list (t_date)
(partition p_20150726 values ('20150726'),
partition p_20150809 values ('20150809'),
partition p_20150810 values ('20150810')
);
--查询15天前日期
select sysdate - 15 from al;
--插入数据
insert into t_temp_01 values ('20150726',1) ;
insert into t_temp_01 values ('20150809',2) ;
insert into t_temp_01 values ('20150810',3) ;
commit;
--查询数据
select * from t_temp_01 ;
--truncate表的15天前分区
declare
v_sql varchar(500) := '';
begin

v_sql := 'alter table t_temp_01 truncate partition p_' || to_char(sysdate - 15 ,'yyyymmdd') ;
dbms_output.put_line(v_sql);
execute immediate v_sql ;
end ;

select * from t_temp_01 ;

热心网友 时间:2022-04-07 20:29

不要delete了,直接truncate 吧
数据量大,占用的回滚空间太多

热心网友 时间:2022-04-07 22:03

declare
v_sql varchar2(2000);
begin
v_sql:='alter table tablename truncate partition PAR_LOG_'||(select to_number(to_char(sysdate-15,'dd')) num from al);
execute immediate v_sql;
end;

热心网友 时间:2022-04-08 02:03

需要看下你采用的分区是什么分区,如果是散列分区,是没办法的。 或者写存过,分别去每个分区去删除

热心网友 时间:2022-04-08 04:27

用DDL语言和约束可求出,再删除
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
国家对腾讯已经作出解除音乐版权处罚,为什么网易云还是很 市场监管总局依法对腾讯控股有限公司作出责令解除网络音乐 腾讯放弃音乐独家版权,绝大部分独家协议已按期解约 高级BEC和中级口译哪个难? 三级口译是什么样的水平 高级日语口译大概是什么水平 高级口译常用谚语 品牌型号怎么填写 送刀剑是什么风水 送礼送菜刀是什么意思 保单复效后的宽限期应如何计算 索尼29寸液晶电视 索尼液晶电视的品质和性价比怎样? 48英寸索尼液晶电视多少钱啊 索尼50英寸液晶电视在日本多少钱 什么电视机好,么品牌,3千左右? 推荐索尼液晶电视 39吋4K电视价格是多少 函授含金量高吗,好毕业吗? 最近想报考函授本科学历 我想问一下这个含金量高不高 国家认可不 本科毕业证是业余的含金量高,还是函授的含金量高? 现在函授本科的学历,在社会上含金量高吗 我这上面显示已签收 但是还没有收到 取件码? 快递到了没有取件码怎么回事? 函授的本科毕业证含金量有多大 淘宝东西到了,没有按期去取,现在显示已签收,没有取件码了,请问怎么办? 业余和函授哪个含金量高? 函授专升本和自考本科含金量一样吗? 快递不小心收货了,没有取件码怎么办? 已签收但没有取件码- 问一问 喝柠檬水减肥一天套喝多少? 昂扬奋发的意思是什么急急急急急急急急!!! 一天可以喝多少柠檬水? 奋进的释意 振奋昂扬 了,还踢了一个交警屁股一脚会被判刑吗 有开字的诗句 有昂扬奋进的意思? 一天要喝几杯柠檬水才能达到减肥 踢交警一脚也没咋地拘留几天? 狂浪不羁表达的是昂扬振奋的人生态度,还是悲观消极的人生态度? 我在看手所呆了14天通知我逮捕,案情就是九号骂*,踢*一脚,法制判我几年? 家人骑电动车带人被*发现,后来家人踢*一脚没受伤会被判刑吗?为什么关了50天还没判刑? 情绪激动振奋昂扬是什么成语 家人骑电动车带人被*发现,后来家人踢*一脚没受伤会被判刑吗?为什么关了50天还没得消息 如果我踹一个人一脚,然后他报警了,这样算犯法吗? 把警车踢了一脚,就被*说妨碍公务抓了关进去20几天,家里人也见不着面,还说判刑一年.. 有这么严重? 强制保险在哪里买 我们十个人打四个人,我最多就是踢了一脚,请问给*抓了以后我会获得什么样的刑法 评论微信朋友圈显示的是自己写的备注还是他本来的名字? 为什么在微信里,有些人的评论看不到他说什么,只看得到他的名字?