要实现以下二个功能:
1。每天0:01(时间)把fiveminutestoday表中前天的数据拷贝到当月表中,如7月2日的零点零一分把fiveminutestoday表中6月30日的数据拷贝到fiveminutes200306表中,并把fiveminutestoday表中6月30日的数据删除。(表fiveminutestoday只存放今天和昨天的数据,表fiveminutes200306存放2003年6月的数据)
2。在每月底时生成下个月的表.如在2003年7月底时生成fiveminutes200308表。要怎么做,最好哪位兄弟有空帮我做做,各位兄弟帮帮忙!
分不够可以再加!以下是小弟我做的,不知错在哪:
===========================================================================CREATE OR REPLACE PROCEDURE P_RTSS_COPYDATA IS
    Tableofinsert varchar2(16) ;
    cursor_name INTEGER;
    rows_processed INTEGER;BEGIN
    Tableofinsert := 'fiveminutes' || to_char(sysdate-2,'YYYYMM') ;    cursor_name := dbms_sql.open_cursor;
    DBMS_SQL.PARSE(cursor_name,
'insert into '||Tableofinsert||'select * from rtss.fiveminutestoday where to_char(riqi,''yyyymmdd'')=to_char(sysdate-2,''yyyymmdd'')',
         dbms_sql.native);
    rows_processed := dbms_sql.execute(cursor_name);
    DBMS_SQL.close_cursor(cursor_name);EXCEPTION
WHEN OTHERS THEN
    DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;
===========================================================================CREATE OR REPLACE PROCEDURE P_RTSS_CREATETABLE IS
    Table_Month  varchar2(15);
    This_date date;
    cursor_name INTEGER;
    rows_processed INTEGER;BEGIN    this_date :=ADD_MONTHS(sysdate,1);
    table_month:='fiveminutes' || to_char(this_date,'YYYYMM');    cursor_name := dbms_sql.open_cursor;
    DBMS_SQL.PARSE(cursor_name,
'create table '||table_month||' (RIQI DATE,NAME VARCHAR2(12),VALUE NUMBER(10,3)) TABLESPACE RTSSDATA',
         dbms_sql.native);
    rows_processed := dbms_sql.execute(cursor_name);
    DBMS_SQL.close_cursor(cursor_name);EXCEPTION
WHEN OTHERS THEN
    DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;===========================================================================Rem 时间:每月
var jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,'P_RTSS_CREATETABLE;',SYSDATE,'Trunc(Add_Months(SYSDATE,1),''MM'')');end;
/Rem 时间:每天1:00var jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,
'P_RTSS_COPYDATA;',SYSDATE,'TRUNC(SYSDATE)+1+1/24');
end;
/