为什么oracle定时任务 都用 insert语句不用crate as语句:
一、用insert
create or replace procedure ACCESS_PROD is
beginexecute   immediate   'truncate table  access_prod_inst'; insert into access_prod_inst select* from access-prod_inst@crmbm;
二、用select as 
create or replace procedure ACCESS_PROD is
begindrop tabale ACCESS_PROD;create table access_prod_inst  as select* from access-prod_inst@crmbm;

解决方案 »

  1.   

    这个因场景而定吧,我觉得,不一定就非要用哪个
    你drop了表,重现建的话,索引、主键、约束等信息,都得重新建
    truncat然后insert的话,就不用重新建。。这算不算个理由
      

  2.   

    创建表是要一定的时间的,如果你这个表数据量大的话,你删除了表,如果别人用到这个表就要报错了,然而只是删除数据,只是没数而不会报错。其它都没什么大问题。简单来说临时表就用drop吧,不然还是truncate的好
      

  3.   

    drop tabale ACCESS_PROD;并不是删除表,而是把表移入回收站,空间并没有释放。
      

  4.   

    可是用truncate 再用insert 非常的慢。
      

  5.   

    truncat然后insert的话,非常慢是怎么回事。
      

  6.   

    你是有聚集索引么?如果有最好删除了重新建。不过我觉得应该不会这样吧。数据变动大的最好不要聚集索引,就如你这个要删除数据的。一般情况insert数据同一个表,速度应该都没多大影响的。
      

  7.   

    job会执行多次,ctas在第二次执行时,就会出错了。