Chinaunix首页 | 论坛 | 博客
  • 博客访问: 929631
  • 博文数量: 358
  • 博客积分: 8185
  • 博客等级: 中将
  • 技术积分: 3751
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 16:27
个人简介

The views and opinions expressed all for my own,only for study and test, not reflect the views of Any Company and its affiliates.

文章分类

全部博文(358)

文章存档

2012年(8)

2011年(18)

2010年(50)

2009年(218)

2008年(64)

我的朋友

分类: Oracle

2009-04-15 12:39:14

 一、在PLSQL中创建表:
create table HWQY.TEST
(
  CARNO     VARCHAR2(30),
  CARINFOID NUMBER
)

二、在PLSQL中创建存储过程:

create or replace procedure pro_test
AS
carinfo_id number;
BEGIN
select s_CarInfoID.nextval into carinfo_id
 from dual;
insert into test(test.carno,test.carinfoid) values(carinfo_id,'123');
commit;
end pro_test;

三、在SQL命令窗口中启动任务:

在SQL>后执行:

VARIABLE jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,
 'pro_test;',
SYSDATE,'sysdate+1/24/12');
 
commit;
end;
/

提交后提示:

英文代码

四、跟踪任务的情况(查看任务队列):

SQL>  select job,next_date,next_sec,failures,broken from user_jobs;

       JOB NEXT_DATE   NEXT_SEC           FAILURES BROKEN
---------- ----------- ---------------- ---------- ------
         1 2008-2-22 ?01:00:00                  0 N

说明有一个任务存在了。

执行select * from test t查看定时任务的结果。可以看出定时任务是正常执行了的。

五、停止已经启动的定时任务:

先执行select job,next_date,next_sec,failures,broken from user_jobs;

以查看定时任务的job号。

在SQL>中执行下面的语句停止一个已经启动的定时任务:

begin
 dbms_job.remove(1);
commit;
end;
/

表示停止job为1的任务。

执行后显示如下:

PL/SQL procedure successfully completed

六、查看进程数:

show parameter job_queue_processes;
必须>0,否则执行下面的命令修改:
alter system set job_queue_processes=5;

七、再创建一个任务(每5分钟执行一次):

variable jobno number;

begin
dbms_job.submit(:jobno, 'pro_test;',
sysdate,'sysdate+1/24/12');
commit;
 end;
 /

建立一个定时任务后,在PLSQL中查看JOB,它的sql语句类似的是如下:

begin sys.dbms_job.submit(job => :jobno, what => 'pro_test;', next_date => to_date('21-02-2008 17:37:26', 'dd-mm-yyyy hh24:mi:ss'), interval => 'sysdate+1/24/12'); commit; end; / 所以,创建一个任务的完整的格式是: variable jobno number; begin sys.dbms_job.submit(job => :jobno, what => 'pro_test;', next_date => to_date('21-02-2008 17:37:26', 'dd-mm-yyyy hh24:mi:ss'), interval => 'sysdate+1/24/12'); commit; end; / --系统会自动分配一个任务号jobno。

八、 执行select job,next_date,next_sec,failures,broken from user_jobs;

结果:

JOB NEXT_DATE NEXT_SEC FAILURES BROKEN
1 1 2008-2-22 AM 01:00:00 01:00:00 0 N
2 2 2008-2-21 PM 05:42:45 17:42:45 0 N
3 3 2008-2-21 PM 05:42:45 17:42:45 0 N

阅读(514) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~