oracle 定时任务

我看见佛 2012-02-10 09:13:23
二、在PLSQL中创建存储过程:
create or replace procedure pro_onlineuser
AS
carinfo_id number;
BEGIN
end pro_onlineuser;

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


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


如果我要每天的23:30:30 这个时间执行怎么写啊?sysdate+1/24/60这个怎么计算的?
...全文
1278 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
我心飞翔 2012-02-10
  • 打赏
  • 举报
回复
创建存储过程的语句

create or replace procedure pro_onlineuser
AS
carinfo_id number;
BEGIN
carinfo_id := 3;
end pro_onlineuser;


提交作业区的语句:

-- Created on 2012/2/10 by ADMINISTRATOR
DECLARE
-- Local variables here
jobID binary_integer;
beginDate DATE;
BEGIN
beginDate := to_date('10-02-2012 23:30:30', 'DD-MM-YYYY HH24:MI:SS');
dbms_job.submit(jobID, 'pro_onlineuser;', beginDate, 'SYSDATE + 1' );
END;


注意pro_onlineuser后面的;号
我看见佛 2012-02-10
  • 打赏
  • 举报
回复
VARIABLE jobno number;
MYDATE DATE;
begin
DBMS_JOB.SUBMIT(:jobno,'BarDataCompare;',SYSDATE,'TRUNC(SYSDATE + 1) + (23*60+30)/(24*60)');
commit;
end;
我看见佛 2012-02-10
  • 打赏
  • 举报
回复
CREATE OR REPLACE procedure BarDataCompare as
begin
----中班已到未发---------------------------------------------------------
INSERT INTO TB_BarScanData
(OrderID,Scantype,SiteId,CenterId,EnterSite,ScanTime,EnterTime)
select OrderID,'02',SiteId,CenterId,EnterSite,
to_date(to_char(sysdate,'yyyy-mm-dd') || '22:00:00','YYYY-MM-DD HH24:MI:SS'),
EnterTime
from TB_BarScanData t
where ScanTime between
to_date(to_char(sysdate,'yyyy-mm-dd') || '13:0:00','YYYY-MM-DD HH24:MI:SS')
and
to_date(to_char(sysdate,'yyyy-mm-dd') || '23:30:00','YYYY-MM-DD HH24:MI:SS')
and ScanType= '03' and CenterID = '76900' and EnterSite ='76900'
and not exists(select OrderID from TB_BarScanData
where ScanType= '02' and CenterID = '76900' and EnterSite ='76900')
----中班未到已发--------------------------------------------------------
INSERT INTO TB_BarScanData
(OrderID,Scantype,SiteId,CenterId,EnterSite,ScanTime,EnterTime)
select OrderID,'03',SiteId,CenterId,EnterSite,
to_date(to_char(sysdate,'yyyy-mm-dd') || '22:00:00','YYYY-MM-DD HH24:MI:SS'),
EnterTime
from TB_BarScanData t
where ScanTime between
to_date(to_char(sysdate,'yyyy-mm-dd') || '13:0:00','YYYY-MM-DD HH24:MI:SS')
and
to_date(to_char(sysdate,'yyyy-mm-dd') || '23:30:00','YYYY-MM-DD HH24:MI:SS')
and ScanType= '02' and CenterID = '76900' and EnterSite ='76900'
and not exists(select OrderID from TB_BarScanData
where ScanType= '03' and CenterID = '76900' and EnterSite ='76900')
end;

VARIABLE jobno number;
MYDATE DATE;
begin
DBMS_JOB.SUBMIT(:jobno,'pro_onlineuser;',SYSDATE,'TRUNC(SYSDATE + 1) + (23*60+30)/(24*60)');
commit;
end;
SYS.DBMS_JOB.RUN(:jobno);
select job,next_date,next_sec,failures,broken from user_jobs;
merrill 2012-02-10
  • 打赏
  • 举报
回复
DBMS_JOB.SUBMIT(:jobno,'pro_onlineuser;',SYSDATE,'TRUNC(SYSDATE ) + (23*60*60+30*60+30)/(24*60*60)');
mingchaoyan 2012-02-10
  • 打赏
  • 举报
回复
create or replace procedure pro_onlineuser
AS
carinfo_id number;
BEGIN
end pro_onlineuser;

lz 你确定这个存储过程贴完整了???????????
merrill 2012-02-10
  • 打赏
  • 举报
回复
DBMS_JOB.SUBMIT(:jobno,'pro_onlineuser;',SYSDATE,'TRUNC(SYSDATE + 1) -(1/(24*60*2))');

AcHerat 2012-02-10
  • 打赏
  • 举报
回复
DBMS_JOB.SUBMIT(:jobno,'pro_onlineuser;',SYSDATE,'TRUNC(SYSDATE + 1) + (23*60+30)/(24*60)');

???
我看见佛 2012-02-10
  • 打赏
  • 举报
回复
急,,求助
我看见佛 2012-02-10
  • 打赏
  • 举报
回复
VARIABLE jobno number;为什么这句我一执行提示“无效的Sql语句"呢?
我看见佛 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xpingping 的回复:]
上面写错了……

SQL code
VARIABLE jobno number;
MYDATE DATE;
begin
select TO_DATE(to_char(sysdate,'YYYY/MM/DD')||'23:30:30','YYYY/MM/DD hh24:mi:ss')INTO MYDATE from dual;
DBMS_JOB.SUBMIT(:jobno,'pro_……
[/Quote]
DBMS_JOB.SUBMIT(:jobno,'pro_onlineuser;',MYDATE ,'sysdate+1/24/60');

不是MYDATE+1么?这样不是每一分钟就执行一次了吗?
xpingping 2012-02-10
  • 打赏
  • 举报
回复
上面写错了……
VARIABLE jobno number;
MYDATE DATE;
begin
select TO_DATE(to_char(sysdate,'YYYY/MM/DD')||'23:30:30','YYYY/MM/DD hh24:mi:ss')INTO MYDATE from dual;
DBMS_JOB.SUBMIT(:jobno,'pro_onlineuser;',MYDATE ,'sysdate+1/24/60');
commit;
end;
mingchaoyan 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xpingping 的回复:]

SQL code
VARIABLE jobno number;
MYDATE VARCHAR2(18);
begin
select to_char(sysdate,'YYYY/MM/DD')||'23:30:30' INTO MYDATE from dual;
DBMS_JOB.SUBMIT(:jobno,'pro_onlineuser;',SYSDATE,MYDATE);
commit;
……
[/Quote]
第一个问题 ,这样更好
xpingping 2012-02-10
  • 打赏
  • 举报
回复
VARIABLE jobno number;
MYDATE VARCHAR2(18);
begin
select to_char(sysdate,'YYYY/MM/DD')||'23:30:30' INTO MYDATE from dual;
DBMS_JOB.SUBMIT(:jobno,'pro_onlineuser;',SYSDATE,MYDATE);
commit;
end;

我看见佛 2012-02-10
  • 打赏
  • 举报
回复
详细些?
mingchaoyan 2012-02-10
  • 打赏
  • 举报
回复
1 若是 windown下,写成脚本, 添加任务计划,设置为那个时间就成了;
2 sysdate+1/24/60 中那个 1 表示一天 于是 整个的意思就是 当前时间加上1分钟
我看见佛 2012-02-10
  • 打赏
  • 举报
回复
select TRUNC(SYSDATE + 1) -(30/(24*60)) from dual
lzfstruggle 2012-02-10
  • 打赏
  • 举报
回复
http://space.itpub.net/27157/viewspace-425567
我看见佛 2012-02-10
  • 打赏
  • 举报
回复
ok,,先 谢 过 大 家,测试了一个,行 了, 一会再结帖,
luoyoumou 2012-02-10
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 luoyoumou 的回复:]

SQL code
-- 在SQL*Plus中执行:
variable pro_get_table_increment_jb number;

begin
dbms_job.submit(:pro_get_table_increment_jb,'pro_get_table_increment;',sysdate,'TRUNC(SYSDATE+1)+(23.5*60*60+30)/(24*6……
[/Quote]

-- 记住:是在SQL*Plus中执行,别在SQL*Developer工具中执行!
luoyoumou 2012-02-10
  • 打赏
  • 举报
回复
-- 在SQL*Plus中执行:
variable pro_get_table_increment_jb number;

begin
dbms_job.submit(:pro_get_table_increment_jb,'pro_get_table_increment;',sysdate,'TRUNC(SYSDATE+1)+(23.5*60*60+30)/(24*60*60)');
end;
/
加载更多回复(6)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧