oracle 存储过程创建表分区

oracle 存储过程创建表分区,第1张

概述oracle 存储过程创建分区

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

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,'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,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,'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,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,'END');  COMMIT;  --DELETE PARTITION  INSERT INTO BIP_LOG_STAT_EXEC_TAB  VALUES    (TO_CHAR(SYSDATE,'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,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,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,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,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,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,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,'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,'BIP_MMS_PARTITION_PROC_ERROR',vErrInfo);      COMMIT;    END;  end bip_mms_partition_proc;

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的oracle 存储过程创建表分区全部内容,希望文章能够帮你解决oracle 存储过程创建表分区所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1164887.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存