如何编写程序从表中删除3个月的记录,并通过邮件发送旧计数和新计数

时间:2016-07-26 08:53:47

标签: oracle11g

我在下面写了一个程序来删除表中的记录,并在另一个表中记录旧的和新的rowcount。

create or replace procedure delete_old_records_job  as
DECLARE
COUNTER PLS_INTEGER:=1;
drop table SIEBEL.RETAILORDER_DETAILS_COUNT;
CREATE TABLE SIEBEL.RETAILORDER_DETAILS_COUNT (TABLE_COUNT_OLD varchar(64) NOT NULL,TABLE_COUNT_NEW varchar(64) NOT NULL);
 insert into  SIEBEL.RETAILORDER_DETAILS_COUNT( TABLE_COUNT_OLD )SELECT COUNT(*) FROM SIEBEL.Z_VIEWS_BACKUP;
BEGIN
WHILE COUNTER>0 LOOP
   DELETE FROM SIEBEL.Z_VIEWS_BACKUP WHERE LAST_UPD < add_months(sysdate, -3) AND ROWNUM<25000;
   COUNTER:=SQL%ROWCOUNT;
   COMMIT;
END LOOP

insert into  SIEBEL.RETAILORDER_DETAILS_COUNT( TABLE_COUNT_NEW ) 
SELECT COUNT(*) FROM SIEBEL.Z_VIEWS_BACKUP;
END;

我在执行

时遇到错误
SQL> show errors procedure delete_old_records_job;
Errors for PROCEDURE DELETE_OLD_RECORDS_JOB:

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/1      PLS-00103: Encountered the symbol "DECLARE" when expecting one of
         the following:
         begin function pragma procedure subtype type <an identifier>
         <a double-quoted delimited-identifier> current cursor delete
         exists prior external language
         The symbol "begin" was substituted for "DECLARE" to continue.

4/1      PLS-00103: Encountered the symbol "DROP" when expecting one of
         the following:
         begin function pragma procedure subtype type <an identifier>
         <a double-quoted delimited-identifier> current cursor delete

LINE/COL ERROR
-------- -----------------------------------------------------------------
         exists prior

0 个答案:

没有答案