1.新建Oracle全局临时表,代码如下:
Sql代码
- DECLARE cnt int;
- begin
- --如果存在该临时表,则删除
- SELECT count(1) into cnt from user_tables where table_name="TEMPLOGSMSHALL_SESSION";
- if cnt>0 THEN
- BEGIN
- execute immediate "DROP TABLE TEMPLOGSMSHALL_SESSION";
- END;
- end if;
- end;
-
- /
- --创建临时表
- CREATE GLOBAL TEMPORARY TABLE TempLogSmsHall_Session (
- SESSIONID VARCHAR2(28) NOT NULL,
- USERTELNO VARCHAR2(16) NOT NULL,
- USERCITYNAME VARCHAR2(8) NOT NULL,
- USERBRANDNAME VARCHAR2(16) NOT NULL,
- NLIBIZNAME VARCHAR2(32) NOT NULL,
- BIZNAME VARCHAR2(128) NOT NULL,
- OPERATIONNAME VARCHAR2(16) NOT NULL,
- SCENEHANDLETYPE VARCHAR2(32) NOT NULL,
- SCENEHANDLEID VARCHAR2(6) NOT NULL,
- SESSIONBEGINTIME TIMESTAMP NOT NULL,
- SESSIONENDTIME TIMESTAMP NOT NULL,
- ISTIMEOUT CHAR(1) DEFAULT "1" NOT NULL,
- ALLCOSTSECONDS INTEGER DEFAULT (0) NOT NULL,
- REVSMSNUM INTEGER DEFAULT (0) NOT NULL,
- SENDSMSNUM INTEGER DEFAULT (0) NOT NULL
- )
- ON COMMIT PRESERVE ROWS;
上面创建的临时表,对于每个调用它的存储过程或PL/SQL块都是独立的,互不影响的。就是说允许两个PL/SQL同时调用,结果页不会互相影响。
2.新建Oracle作业,代码如下:
Sql代码
- DECLARE job NUMBER;
- begin
- dbms_job.submit(job => job,
- what => "ECSS_JOB.SMSS10_Job_DailyStatus("""");",
- next_date => trunc(sysdate) + ( 1 + 1/24),
- interval => "sysdate + 1");
- commit;
- 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)