in varchar2,
v_tablespace_name_in in varchar2,
v_begin_date in varchar2,
v_end_date in varchar2) is
-- Local variables here
---分区表信息
cursor cur_utp(v_table_name in user_tab_partitions.table_name%TYPE) is
select *
from (select utp.table_name,
utp.tablespace_name,
utp.partition_name,
utp.high_value,
utp.high_value_length,
utp.partition_position
from user_tab_partitions utp
where utp.table_name = UPPER(v_table_name)
order by utp.partition_position desc) utp
v_high_value varchar2(255); --less than value信息
v_partition_max_date timestamp; ----less than value信息的 timestamp表示形式
v_sqlexec VARCHAR2(2000); --DDL语句变量
v_count number := 0;
v_interver number := 1; --步长间隔 单位(天)
v_part_name_header varchar2(20) := 'p';
v_part_name varchar2(2000); --分区名
v_partition_num number := 0;
v_tablespace_name varchar2(200);
v_end_date_inner timestamp;
begin
v_interver := 1 ;
v_end_date_inner := trunc(to_timestamp(v_end_date,
'syyyy-mm-dd hh24:mi:ss.ff'));
--取值
for utp in cur_utp(v_table_name) loop
v_high_value := substr(utp.high_value,
11,
10);
v_partition_max_date := to_timestamp(v_high_value,
'syyyy-mm-dd hh24:mi:ss.ff');
if (to_timestamp(v_begin_date, 'syyyy-mm-dd hh24:mi:ss.ff') >
v_partition_max_date) then
v_partition_max_date := to_timestamp(v_begin_date,
'syyyy-mm-dd hh24:mi:ss.ff');
end if;
v_part_name := utp.partition_name;
--如果没有给默认值
if (v_tablespace_name_in is null) then
-- v_tablespace_name
v_tablespace_name := utp.tablespace_name;
else
v_tablespace_name := v_tablespace_name_in;
end if;
if (v_part_name_header =
substr(v_part_name, 1, length(v_part_name_header))) then
v_partition_num := to_number(substr(v_part_name,
length(v_part_name_header) + 1,
length(v_part_name)));
v_partition_num := to_number(to_char(to_date(v_partition_num,'yyyymmdd')+1,'yyyymmdd'));
else
dbms_output.put_line('not expect part_name header user default:' ||
v_part_name);
v_partition_num := 0;
i := 0;
v_partition_max_date := v_partition_max_date + v_interver;
while v_partition_max_date <= v_end_date_inner loop
v_SqlExec := 'ALTER TABLE ' || v_table_name || ' ADD PARTITION ' ||
v_part_name_header || (to_number(to_char(to_date(v_partition_num,'yyyymmdd')+i,'yyyymmdd'))) ||
' values less than(TIMESTAMP''' ||
to_char(v_partition_max_date, 'syyyy-mm-dd hh24:mi:ss.ff') ||
''') TABLESPACE ' || v_tablespace_name;
dbms_output.put_line('创建 表分区' || i || '=' || v_SqlExec);
--alter table IP_CONNRATE_LIMITEX_LOG add partition part_0002 values less than(TIMESTAMP'2010-08-31 00:00:00.000000') tablespace NASP_IP_LOG_TABLESPACE;
DBMS_Utility.Exec_DDL_Statement(v_SqlExec);
v_partition_max_date := v_partition_max_date + v_interver;
i := i + 1;
end loop;
v_count := v_count + i;
end add_partition;
动态使用存储过程给分区表建立分区
Bensantan
转载
编程分享
2023-05-07 18:56:37
简介 CREATE OR REPLACE Procedureadd_partition(v_table_name in varchar2,
点击排行
最新评论
-
2025-04-28 09:28:49 评
有了它,AI 都能直接管理 Gitee 代码仓啦 :
234234
-
2024-05-28 18:49:54 评
袅袅炊烟起,长河落日急 :
-
2023-06-02 13:05:35 评
作为程序员的痛苦 :
做程序员最难的其实是坚持,恒心,毅力,决心,规划,执行力必须很强,否则难成!
-
2023-05-19 12:00:58 评
令人困惑的strtotime :
学习了给博主点赞
-
2023-05-07 15:53:27 评
袅袅炊烟起,长河落日急 :
—— 揽流光,涤眉霜,清露烈酒一口话苍茫。 -
2023-05-07 15:35:51 评
从 Elasticsearch 到 Apache Doris,构建 10 倍性价比提升的新一代日志存储分析平台 :
几十岁的人了都
-
2023-05-07 15:34:13 评
Kubernetes Gateway API 深入解读和落地指南 :
//here is mark console.log('mark'); //mark ..............................
-
2023-05-07 15:31:26 评
使用MASA全家桶从零开始搭建IoT平台(二)设备注册 :
echo 'Nice'; //Nice
-
2023-05-07 15:24:16 评
Android 自定义View 之 圆环进度条 :
-
2023-05-06 16:33:01 评
袅袅炊烟起,长河落日急 :
看看新作的模块表现如何。。。
echo '不错';
猜您喜欢
博格推荐
- 使用layer框架分页及时间差转换函数
- TCP/IP、HTTP、HTTPS、HTTP2.0
- 给2019前端的5个建议
- 三个数据分析里最难攻破的“悖论”,每一个都令人费解
- Java生成二维码分享海报
- linux常用命令
- 再谈http请求的GET和POST的区别,以及为什么网上的多数答案都是错的。
- 关于云原生应用的思考
- redis一主二从三哨兵的搭建
- 数组实现方式:PHP5VSPHP7
- 云原生落地实践:山西数智时代基于Rainbond实现智慧景区
- Nebula架构剖析系列(一)图数据库的存储设计
- 高效率编程:php的优化准则介绍
- 基于composer安装QueryList及图片下载替换内容类
- Redis分片(分布式缓存)
- 在PHP中如何简写IF判断
- Redis的SETNX的使用方法
- 前端性能优化之重排和重绘
- mysql的并发控制原理
- PHP商城那个好?2022年十大开源PHP商城【分享】