⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 自动创建表空间分区代码.sql

📁 自动创建表空间, 分区的ORACLE代码, 放在计划中可使用.
💻 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 + -