最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

oracle存储过程创建表分区

来源:动视网 责编:小采 时间:2020-11-09 16:16:00
文档

oracle存储过程创建表分区

oracle存储过程创建表分区:oracle 存储过程创建表分区 Oracle 存储过程 CREATE OR REPLACE PROCEDURE BIP_MMS_PARTITION_PROC AS v_Mms_Task_Tab VARCHAR2(50); --表名 v_Mms_Content_Tab VARCHAR2(50); v_Mms_User_Tab VARCHAR2
推荐度:
导读oracle存储过程创建表分区:oracle 存储过程创建表分区 Oracle 存储过程 CREATE OR REPLACE PROCEDURE BIP_MMS_PARTITION_PROC AS v_Mms_Task_Tab VARCHAR2(50); --表名 v_Mms_Content_Tab VARCHAR2(50); v_Mms_User_Tab VARCHAR2


oracle 存储过程创建表分区 Oracle 存储过程 CREATE OR REPLACE PROCEDURE BIP_MMS_PARTITION_PROC AS v_Mms_Task_Tab VARCHAR2(50); --表名 v_Mms_Content_Tab VARCHAR2(50); v_Mms_User_Tab VARCHAR2(50); v_TableSpace VARCHAR2(20); --表空间 v_PartPreFl

oracle 存储过程创建表分区
Oracle 存储过程 $velocityCount-->
CREATE OR REPLACE PROCEDURE BIP_MMS_PARTITION_PROC AS

 v_Mms_Task_Tab VARCHAR2(50); --表名
 v_Mms_Content_Tab VARCHAR2(50);
 v_Mms_User_Tab VARCHAR2(50);
 v_TableSpace VARCHAR2(20); --表空间
 v_PartPreFlag VARCHAR2(50); --分区名标识
 v_SqlCursor NUMBER; --游标
 v_SqlExec VARCHAR2(2000); --执行语句
 v_PartPreDate VARCHAR2(20); --分区日期
 v_RangeValue NUMBER;
 v_RangeDate NUMBER;
 v_Rows NUMBER(30) := 0;
 v_Num NUMBER(30) := 0;
 vErrInfo VARCHAR2(200);
 p_DateFrom NUMBER;
 p_PartNum NUMBER;
 p_Range NUMBER;
BEGIN

 v_Mms_Task_Tab := 'BIP_MMS_MT_TASK_LOG_TAB_TEST';
 v_Mms_Content_Tab := 'BIP_MMS_MT_CONTENT_TAB_TEST';
 v_Mms_User_Tab := 'BIP_MMS_MT_USER_LOG_TAB_TEST';
 -- 读取配置参数
 BEGIN
 SELECT TO_NUMBER(VALUE)
 INTO p_DateFrom
 FROM BIP_OTHERS_PROPERTIES_TAB
 WHERE NAME = 'p_DateFrom';
 SELECT TO_NUMBER(VALUE)
 INTO p_PartNum
 FROM BIP_OTHERS_PROPERTIES_TAB
 WHERE NAME = 'p_PartNum';
 SELECT TO_NUMBER(VALUE)
 INTO p_Range
 FROM BIP_OTHERS_PROPERTIES_TAB
 WHERE NAME = 'p_Range';
 EXCEPTION
 WHEN OTHERS THEN
 BEGIN
 p_DateFrom := 0;
 p_PartNum := 1;
 p_Range := 180;
 END;
 END;
 --记录存储过程添加分区
 INSERT INTO BIP_LOG_STAT_EXEC_TAB
 VALUES
 (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'),
 'BIP_MMS_PARTITION_PROC_ADD',
 'BEGIN');
 COMMIT;
 --ADD PARTITION 
 FOR i IN 1 .. p_PartNum LOOP
 --BIP_MMS_MT_CONTENT_TAB 添加分区
 v_PartPreDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD');
 dbms_output.put_line(v_PartPreDate);
 v_Num := 0;
 v_TableSpace := 'BIP_MMS_TS_TEST';
 v_PartPreFlag := 'MMS_MT_CONTENT';
 SELECT COUNT(*)
 INTO v_Num
 FROM user_tab_partitions
 WHERE table_name = v_Mms_Content_Tab
 AND SUBSTR(partition_name, 16, 8) = v_PartPreDate;
 IF v_Num < 1 THEN
 v_RangeDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD');
 v_RangeValue := v_RangeDate || '240000';
 dbms_output.put_line(v_RangeValue);
 v_SqlExec := 'ALTER TABLE ' || v_Mms_Content_Tab || ' ADD PARTITION ' ||
 v_PartPreFlag || '_' || v_PartPreDate ||
 ' VALUES LESS THAN(''' || v_RangeValue ||
 ''') TABLESPACE ' || v_TableSpace;
 dbms_output.put_line(v_SqlExec);
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 END IF;
 --BIP_MMS_MT_TASK_LOG_TAB_TEST 添加分区
 v_PartPreDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD');
 v_Num := 0;
 v_TableSpace := 'BIP_MMS_TS_TEST';
 v_PartPreFlag := 'MMS_MT_TASK_LOG';
 SELECT COUNT(*)
 INTO v_Num
 FROM user_tab_partitions
 WHERE table_name = v_Mms_Task_Tab
 AND SUBSTR(partition_name, 17, 8) = v_PartPreDate;
 IF v_Num < 1 THEN
 v_RangeDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD');
 v_RangeValue := v_RangeDate || '240000';
 v_SqlExec := 'ALTER TABLE ' || v_Mms_Task_Tab || ' ADD PARTITION ' ||
 v_PartPreFlag || '_' || v_PartPreDate ||
 ' VALUES LESS THAN(''' || v_RangeValue ||
 ''') TABLESPACE ' || v_TableSpace;
 dbms_output.put_line(v_SqlExec);
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 END IF;
 --BIP_MMS_MT_USER_LOG_TAB_TEST 添加分区
 v_PartPreDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD');
 v_Num := 0;
 v_TableSpace := 'BIP_MMS_TS_TEST';
 v_PartPreFlag := 'MMS_MT_USER_LOG';
 SELECT COUNT(*)
 INTO v_Num
 FROM user_tab_partitions
 WHERE table_name = v_Mms_User_Tab
 AND SUBSTR(partition_name, 17, 8) = v_PartPreDate;
 IF v_Num < 1 THEN
 v_RangeDate := TO_CHAR(SYSDATE + p_DateFrom + i, 'YYYYMMDD');
 v_RangeValue := v_RangeDate || '240000';
 v_SqlExec := 'ALTER TABLE ' || v_Mms_User_Tab || ' ADD PARTITION ' ||
 v_PartPreFlag || '_' || v_PartPreDate ||
 ' VALUES LESS THAN(''' || v_RangeValue ||
 ''') TABLESPACE ' || v_TableSpace;
 dbms_output.put_line(v_SqlExec);
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 END IF;
 END LOOP;
 COMMIT;

 INSERT INTO BIP_LOG_STAT_EXEC_TAB
 VALUES
 (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'), 'BIP_MMS_PARTITION_PROC_ADD', 'END');
 COMMIT;

 --DELETE PARTITION
 INSERT INTO BIP_LOG_STAT_EXEC_TAB
 VALUES
 (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'),
 'BIP_MMS_PARTITION_PROC_DEL',
 'BEGIN');
 COMMIT;

 BEGIN
 v_PartPreFlag := 'MMS_MT_CONTENT' || '_' ||
 TO_CHAR(SYSDATE - p_Range, 'yyyymmdd');
 dbms_output.put_line(v_PartPreFlag);
 v_SqlExec := 'ALTER TABLE ' || v_Mms_Content_Tab ||
 ' TRUNCATE PARTITION ' || v_PartPreFlag;
 dbms_output.put_line(v_SqlExec);
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 dbms_output.put_line(v_PartPreFlag || ' truncated');
 
 v_SqlExec := 'ALTER TABLE ' || v_Mms_Content_Tab || ' DROP PARTITION ' ||
 v_PartPreFlag;
 dbms_output.put_line(v_SqlExec);
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 dbms_output.put_line(v_PartPreFlag || ' dropped');
 END;

 BEGIN
 v_PartPreFlag := 'MMS_MT_TASK_LOG' || '_' ||
 TO_CHAR(SYSDATE - p_Range, 'yyyymmdd');
 dbms_output.put_line(v_PartPreFlag);
 v_SqlExec := 'ALTER TABLE ' || v_Mms_Task_Tab || ' TRUNCATE PARTITION ' ||
 v_PartPreFlag;
 dbms_output.put_line(v_SqlExec);
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 dbms_output.put_line(v_PartPreFlag || ' truncated');
 
 v_SqlExec := 'ALTER TABLE ' || v_Mms_Task_Tab || ' DROP PARTITION ' ||
 v_PartPreFlag;
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 dbms_output.put_line(v_PartPreFlag || ' dropped');
 END;

 BEGIN
 v_PartPreFlag := 'MMS_MT_USER_LOG' || '_' ||
 TO_CHAR(SYSDATE - p_Range, 'yyyymmdd');
 dbms_output.put_line(v_PartPreFlag);
 v_SqlExec := 'ALTER TABLE ' || v_Mms_User_Tab || ' TRUNCATE PARTITION ' ||
 v_PartPreFlag;
 dbms_output.put_line(v_SqlExec);
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 dbms_output.put_line(v_PartPreFlag || ' truncated');
 
 v_SqlExec := 'ALTER TABLE ' || v_Mms_User_Tab || ' DROP PARTITION ' ||
 v_PartPreFlag;
 v_SqlCursor := DBMS_SQL.OPEN_CURSOR;
 DBMS_SQL.PARSE(v_SqlCursor, v_SqlExec, DBMS_SQL.NATIVE);
 v_Rows := DBMS_SQL.EXECUTE(v_SqlCursor);
 DBMS_SQL.CLOSE_CURSOR(v_SqlCursor);
 dbms_output.put_line(v_PartPreFlag || ' dropped');
 END;

 COMMIT;

 INSERT INTO BIP_LOG_STAT_EXEC_TAB
 VALUES
 (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'),
 'BIP_MMS_PARTITION_PROC_DEL',
 'END');
 COMMIT;
EXCEPTION
 WHEN OTHERS THEN
 BEGIN
 ROLLBACK;
 dbms_output.put_line(TO_CHAR(SQLCODE));
 vErrInfo := SUBSTR(SQLERRM, 1, 200);
 dbms_output.put_line(TO_CHAR(vErrInfo));
 INSERT INTO BIP_LOG_STAT_EXEC_TAB
 VALUES
 (TO_CHAR(SYSDATE, 'yyyymmddhh24miss'),
 'BIP_MMS_PARTITION_PROC_ERROR',
 vErrInfo);
 COMMIT;
 END;
 
end bip_mms_partition_proc;

文档

oracle存储过程创建表分区

oracle存储过程创建表分区:oracle 存储过程创建表分区 Oracle 存储过程 CREATE OR REPLACE PROCEDURE BIP_MMS_PARTITION_PROC AS v_Mms_Task_Tab VARCHAR2(50); --表名 v_Mms_Content_Tab VARCHAR2(50); v_Mms_User_Tab VARCHAR2
推荐度:
标签: 创建 过程 存储
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top