如何写一个存储过程实现定时提取数据
提取数据涉及到A(1字段,2字段,3字段),B(1字段,4字段,5字段)三个表,具体提取如:SELECT A.1,SUM(2) ,COUNT(3),B.4,B.5 FROM A , B WHERE A.1=B.1 GROUP BY A.1,B.4,B.5 ;
如何用存储过程实现每月定时提取以上数据的功能,请高手指点,本人将不胜感激!
------解决方案--------------------1、建一个表c包括你要提取数据的字段和一个DATA字段,用来区别提取时间。
2、建一个过程
CREATE OR REPLACE PROCEDURE TEST
IS
tmpvar NUMBER;
BEGIN
tmpvar := 0;
--插入数据和时间
INSERT INTO c
SELECT a.a, SUM (b), COUNT (c), b.d, b.e, SYSDATE
FROM a, b
WHERE a.a = b.a
GROUP BY a.a, b.d, b.e;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END TEST;
/
3、建一个job定时执行过程。其中next_date决定了第一次执行时间,interval决定了更新周期,这里的写法是每月1号执行。
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
(
job => X
,what => 'YJ.TEST; '
,next_date => to_date( '17-09-2007 00:00:00 ', 'dd/mm/yyyy hh24:mi:ss ')
,interval => 'trunc(sysdate+32, 'MM ') '
,no_parse => FALSE
);
END;
4、如果问题解决了,记得关闭,我要分。