oracle添加分区语句_oracle分区表自动添加分区

create or replace procedure p_auto_add_part is

-- ********************************************************************************

-- 程序名称:

-- 功能描述: 可以做成job在每日凌晨启动,建立下一天的分区

-- 输入参数: para_table_name 分区表的名称

-- 输出参数: ret_code 0 :执行成功 1:分区名已经存在 2:其他原因导致失败

-- 输入资源:

-- 输出资源:

-- 中间资源:

-- 创建人员: ls

-- 创建日期: 2012-02-21

-- 版本说明: v1.0

-- 修改人员:

-- 修改日期:

-- 修改原因:

-- 版本说明:

-- 公司名称:

-- ********************************************************************************

l_part_cond varchar2(200); --时间条件

l_part_name varchar2(20); ---系统生成的分区名称

l_sql varchar2(2000); ---需要执行的sql

l_sql_range varchar2(2000); ---range分区是拼装的语句

is_exists number; ---判断该分区名是否已经存在

l_part_type varchar2(20); ---分区类型

ret_code number:=2;

begin

ret_code := 2;

----生成所需要的元素值

l_part_cond := to_char(sysdate + 2, 'yyyy-mm-dd');

l_part_name := 'p' || to_char(sysdate + 1, 'yyyymmdd');

----查询分区类型

l_sql_range := 'alter table t_location add partition ' ||

l_part_name || ' values less than (to_date(' || chr(39) ||

l_part_cond || chr(39) || ',' || chr(39) || 'yyyy-mm-dd' ||

chr(39) || '))';

l_sql := l_sql_range;

---判断生成的分区名在表上是否已经存在

select count(partition_name)

into is_exists

from user_tab_partitions

where table_name = upper('t_location')

and partition_name = l_part_name;

--dbms_output.put_line(l_sql);

--/*

if is_exists = 0 then

begin

execute immediate l_sql;

ret_code := 0;

exception

when others then

ret_code := 1;

end;

end if;

--*/

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值