需要定期根据一张表更新另一张表,想到可以定期删除、重新创建需要更新的表。下面是定期创建的示例。
首先执行下面的语句,创建一个自定义存储过程,这个存储过程的名字叫“C_CQZS”,定期创建表名叫“CQZS”。
CREATE OR REPLACE PROCEDURE C_CQZS AS
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE CQZS AS SELECT *FROM CQZS1';
END;
需要注意的是,建表、删表是用EXECUTE IMMEDIATE 加上建表、删表语句,其他的语句又有所区别,如下面是定期向表里插入记录的一个示例。
再执行下面的语句,创建定时任务JOB
DECLARE
jobno NUMBER;
BEGIN
dbms_job.submit(
jobno, --定时器ID,系统自动获得
'C_CQZS;', --执行的任务名
SYSDATE, --next_date,定时器开始执行的时间,这样写表示立即执行
'TRUNC(sysdate,''mi'') + 4/ (24*60)' --interval,设置定时器执行的频率,这样写每隔4分钟执行一次
);
COMMIT;
END;
PLS-00103
在测试的过程中报过PLS-00103,后面发现是由于建表语句本身在一个' '之内,所以建表语句内部的单引号需要改为双引号。