Oracle 存储过程删除表数据

      Oracle中,可能会遇到写这样的存储过程,先删除表数据,然后向表中插入数据,对于我们新手来说,很容易遇到这样的问题,直接调用 truncate table tablename; 这样会报错的,正确的写法如下:

       create or replace procedure procedurename

          begin

           execute immediate 'TRUNCATE TABLE ds_dwsjfx';

           insert into ds_dwsjfx select * from ...;

           commit;

          end procedurename;

         存储过程写完以后,如果想每天定时调用这个存储过程,应该怎么实现,本人开始的做法是:

         先写个方法来实现删除、插入的操作,然后来个定时器每天定时来执行这个方法,最后再来个监听器监听定时器;这样的做法虽然能实现我想要的东西,但有点麻烦。在数据库中可以直接实现这样的功能:

         首先写好自己需要的存储过程,接下来就很重要了:

         创建job,在PL/SQL的Command Window下执行如下语句:

         variable sjfx_job number;                                   --唯一标识job

          begin

           sys.dbms_job.submit(job => :sjfx_job,         

                      what => 'procedurename;',               --调用存储过程

                      next_date => sysdate,                       --下次执行时间

                      interval => 'sysdate+1');                    --执行间隔

            commit;

         end;

          /

        这样既可每天定时执行自己的存储过程

猜你喜欢

转载自zh52722.iteye.com/blog/2100477