提取数据涉及到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.   

    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、如果问题解决了,记得关闭,我要分。
      

  2.   

    很好的东西啊,值得尝试和推广一下,我正在想用job+procedure完成大批数据的抽取怎么实现呢。