Welcome 微信登录

首页 / 数据库 / MySQL / Oracle统计时用全局临时表 新建Oracle作业

1.新建Oracle全局临时表,代码如下:
Sql代码
  1. DECLARE cnt int;   
  2. begin  
  3. --如果存在该临时表,则删除   
  4.   SELECT count(1) into cnt from user_tables where table_name="TEMPLOGSMSHALL_SESSION";   
  5.   if cnt>0 THEN  
  6.     BEGIN  
  7.      execute immediate "DROP TABLE TEMPLOGSMSHALL_SESSION";   
  8.     END;   
  9.   end if;   
  10. end;   
  11.   
  12. /   
  13. --创建临时表   
  14. CREATE GLOBAL TEMPORARY TABLE TempLogSmsHall_Session (   
  15.    SESSIONID          VARCHAR2(28)                    NOT NULL,   
  16.    USERTELNO          VARCHAR2(16)                    NOT NULL,   
  17.    USERCITYNAME       VARCHAR2(8)                     NOT NULL,   
  18.    USERBRANDNAME      VARCHAR2(16)                    NOT NULL,   
  19.    NLIBIZNAME          VARCHAR2(32)                    NOT NULL,   
  20.    BIZNAME            VARCHAR2(128)                   NOT NULL,   
  21.    OPERATIONNAME      VARCHAR2(16)                    NOT NULL,   
  22.    SCENEHANDLETYPE    VARCHAR2(32)                    NOT NULL,   
  23.    SCENEHANDLEID      VARCHAR2(6)                     NOT NULL,   
  24.    SESSIONBEGINTIME   TIMESTAMP                       NOT NULL,   
  25.    SESSIONENDTIME     TIMESTAMP                       NOT NULL,   
  26.    ISTIMEOUT          CHAR(1)                        DEFAULT "1" NOT NULL,   
  27.    ALLCOSTSECONDS     INTEGER                        DEFAULT (0) NOT NULL,   
  28.    REVSMSNUM          INTEGER                        DEFAULT (0) NOT NULL,   
  29.    SENDSMSNUM         INTEGER                        DEFAULT (0) NOT NULL  
  30. )   
  31. ON COMMIT PRESERVE ROWS;  
上面创建的临时表,对于每个调用它的存储过程或PL/SQL块都是独立的,互不影响的。就是说允许两个PL/SQL同时调用,结果页不会互相影响。

2.新建Oracle作业,代码如下:
Sql代码    
  1. DECLARE job NUMBER;
  2. begin  
  3.   dbms_job.submit(job => job,   
  4.                       what => "ECSS_JOB.SMSS10_Job_DailyStatus("""");",   
  5.                       next_date => trunc(sysdate) + ( 1 + 1/24),   
  6.                       interval => "sysdate + 1");   
  7.   commit;   
  8. end;  
其中:job是系统自动产生编号,ECSS_JOB.SMSS10_Job_DailyStatus是一个过程(里面还有一个字符串参数),next_date设置下次执行时间,这里是明天早上1点,interval设置时间间隔,多久执行一次,这里是每天执行。trunc 函数用于去掉日期里的时间,也就是得到的是某天的00:00,时间是以天为单位的所以要得到某某点某某分,就需要分数:

1/24    一小时;
1/1440    一分;
1/3600   一秒;

另外,注意SQL不要执行多次,执行了几次就会提交几个作业 Oracle查询表结构的常用语句MySQL异构数据同步--tair为例相关资讯      oracle数据库教程 
  • Oracle raw数据类型介绍  (01/29/2013 10:05:53)
  • 监听器注册与ORA-12514 错误分析  (11/13/2012 14:30:08)
  • Oracle SQL的cursor理解  (11/13/2012 14:16:17)
  • Oracle 如何强制刷新Buffer Cache  (01/29/2013 10:02:46)
  • dblink致Oracle库的SCN变成两库的  (11/13/2012 14:24:41)
  • Linux操作系统下完全删除Oracle数  (11/13/2012 08:25:52)
本文评论 查看全部评论 (0)
表情: 姓名: 字数