刪除自動分割槽的儲存過程

2021-08-31 09:04:05 字數 1801 閱讀 4533

我們設計了乙個自動分割槽的超級大表,分割槽採用以時間分割槽的方式,結果資料爆掉了,沒辦法必須刪除其中比較早的分割槽資料,我設計了乙個儲存過程完成這個過程,

create or replace procedure ice_drop_partitions(datebefore in date, tablename in varchar2) as

partitionname varchar2(20);

v_sql varchar2(1024);

temp varchar2(1024);

temp_d date;

v_temp varchar2(1024);

v_cs varchar2(1024);

v_error varchar2(1024);

cursor cur_partition is

select t.partition_name,t.high_value from user_tab_partitions t where t.table_name=tablename order by t.last_analyzed desc;

begin

for for_partition in cur_partition loop

begin

v_temp := 'select to_char('||for_partition.high_value||',''yyyy-mm-dd'') from dual';

execute immediate v_temp into temp ;

select to_date(temp,'yyyy-mm-dd') into temp_d from dual;

if (temp_ddatebefore in date, tablename in varchar2

這兩個引數分別是,

datebefore :刪除幾號以前的資料,

tablename :分割槽所在的表

其中用到了游標:

cursor cur_partition is

select t.partition_name,t.high_value  from user_tab_partitions t where t.table_name=tablename  order by t.last_analyzed desc;

這個是遍歷user_tab_partitions ,找到指定表名的所有分割槽,

v_temp := 'select to_char('||for_partition.high_value||',''yyyy-mm-dd'') from dual';

execute immediate v_temp into temp ;

select to_date(temp,'yyyy-mm-dd') into temp_d from dual; 

這個是找到分割槽的條件,實質就是for_partition.high_value就是乙個

寫道to_date(' 2010-06-02 00:00:00', 'syyyy-mm-dd hh24:mi:ss', 'nls_calendar=gregorian')

類似這種的存在,他是乙個long型,所以把它轉化為date,後面就是比較日期,

v_sql := 'alter table '||tablename||' truncate partition ' ||for_partition.partition_name;

dbms_output.put_line(v_sql);

execute immediate v_sql;

這就是最後刪除分割槽的**...

批量刪除儲存過程的儲存過程

create procedure dropprocedure as declare cur cursor read only for select name from sysobjects where xtype p and name like drop declare name varchar 4...

刪除儲存過程

declare procname varchar 500 declare cur cursor for select name from sys.objects where type p open cur fetch next from cur into procname while fetch s...

刪除儲存過程

儲存過程可以被快速刪除和重建,因為它沒有儲存資料。刪除儲存過程可以使用sql server管理平台和transac sql語句。1.使用sql server管理平台刪除儲存過程 操作步驟如下 1 開啟sql server管理平台,展開結點 物件資源管理器 資料庫伺服器 可程式設計性 儲存過程 選擇要...