📄 自动创建表空间分区代码.sql
字号:
create or replace procedure AUTO_CreateTableSpace(NowTime date)
is
v_count number;
v_FilePath VarChar2(2000);--表数据文件路径
v_TableSpaceName VarChar2(20);--表空间名
v_PartitionName VarChar2(20);--分区名
v_cursor number; --定义光标
v_string varchar2(2000); --定义字符串变量
begin
--数据文件存放位置
select max(TJC0203) into v_FilePath from TJC01, TJC02 where TJC0201 = TJC0100 and TJC0101 = '1014';
--//创建TJS14(XXXX)分区//--
--分区名
v_PartitionName := 'TJS14_'||to_char(get_QuarterMaxDay(NowTime) + 1, 'YYYY')||GET_QUARTERSEQUENCE(get_QuarterMaxDay(NowTime) + 1);
--如果不存在创建
select count(1) into v_count from user_objects where OBJECT_TYPE ='TABLE PARTITION' and Upper(SUBOBJECT_NAME) = Upper(v_PartitionName);
if v_count = 0 then
--表空间名
v_TableSpaceName := 'SK_TJS14_'||to_char(get_QuarterMaxDay(NowTime) + 1, 'YYYY')||GET_QUARTERSEQUENCE(get_QuarterMaxDay(NowTime) + 1);
--为处理打开光标
v_cursor := dbms_sql.open_cursor;
--创建表空间的字串
v_string := 'CREATE SMALLFILE TABLESPACE "'|| v_TableSpaceName ||
'" LOGGING DATAFILE '''||v_FilePath || v_TableSpaceName ||'.dbf'''||
' SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE 32767M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO';
--分析语句
dbms_sql.parse(v_cursor,v_string,dbms_sql.native);
--添加分区的字串
v_string := ' alter table TJS14 add partition '|| v_PartitionName ||' values less than(to_date('''||to_char(get_QuarterMaxDay(get_QuarterMaxDay(NowTime) + 1) + 1, 'YYYY-MM-DD')||''',''YYYY-MM-DD''))'||
' tablespace '||v_TableSpaceName;
--分析语句
dbms_sql.parse(v_cursor,v_string,dbms_sql.native);
--关闭光标
dbms_sql.close_cursor(v_cursor);
end if;
--//创建TJS16(XXXXX)分区//--
--分区名
v_PartitionName := 'TJS16_'||to_char(get_QuarterMaxDay(NowTime) + 1, 'YYYY')||GET_QUARTERSEQUENCE(get_QuarterMaxDay(NowTime) + 1);
--如果不存在创建
select count(1) into v_count from user_objects where OBJECT_TYPE ='TABLE PARTITION' and Upper(SUBOBJECT_NAME) = Upper(v_PartitionName);
if v_count = 0 then
--表空间名
v_TableSpaceName := 'SK_TJS16_'||to_char(get_QuarterMaxDay(NowTime) + 1, 'YYYY')||GET_QUARTERSEQUENCE(get_QuarterMaxDay(NowTime) + 1);
--为处理打开光标
v_cursor := dbms_sql.open_cursor;
--执行字串
v_string := 'CREATE SMALLFILE TABLESPACE "'|| v_TableSpaceName ||
'" LOGGING DATAFILE '''||v_FilePath || v_TableSpaceName ||'.dbf'''||
' SIZE 200M AUTOEXTEND ON NEXT 5120K MAXSIZE 32767M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO';
--分析语句
dbms_sql.parse(v_cursor,v_string,dbms_sql.native);
--添加分区
v_string := ' alter table TJS16 add partition '|| v_PartitionName ||' values less than(to_date('''||to_char(get_QuarterMaxDay(get_QuarterMaxDay(NowTime) + 1) + 1, 'YYYY-MM-DD')||''',''YYYY-MM-DD''))'||
' tablespace '||v_TableSpaceName;
dbms_sql.parse(v_cursor,v_string,dbms_sql.native); --分析语句
dbms_sql.close_cursor(v_cursor); --关闭光标
end if;
end;
/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -