大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说日常记录-oracle建立定时计划,调用存储过程「建议收藏」,希望您对编程的造诣更进一步.
打开plsql,选择Procedures,进行新建。
CREATE OR REPLACE
procedure update_gps is
ROWNUM_BEGIN NUMBER(35);
ROWNUM_END NUMBER(35);
begin
SELECT NUMTEST INTO ROWNUM_BEGIN from TEST WHERE ROWNUM = 1;
ROWNUM_END := ROWNUM_BEGIN+10000;
dbms_output.put_line("ROWNUM_END = " || ROWNUM_END);
UPDATE T_PLT_VEHICLE_LOCATION
SET LON = REGEXP_REPLACE ( REGEXP_REPLACE ( lon, "[^0-9]+", "" ), "(d{3})(d{1,6})?(.*)", "1.2" ),
LAT = REGEXP_REPLACE ( REGEXP_REPLACE ( lat, "[^0-9]+", "" ), "(d{2})(d{1,6})?(.*)", "1.2" )
WHERE
ROWNUM > ROWNUM_BEGIN and ROWNUM <= ROWNUM_END;
dbms_output.put_line("update 1 ");
commit;
UPDATE TEST set NUMTEST=ROWNUM_END WHERE ROWNUM = 1;
dbms_output.put_line("update 2 ");
commit;
end update_gps;
代码100分
从上面的sql 可以看出,我这边定义了两个变量,分别是 ROWNUM_BEGIN 与 ROWNUM_END。不同的是,一个是sql赋值,一个是直接赋值。
进行编译-编译成功
进行debug 测试,测试成功
备注:这里我在测试的时候,本地会一直出现运行中状态,我后面使用的是debug 进行测试,测试成功。
-
定时计划,我这边的需求是每10分钟执行一次。
-
备注: 这里我在网上搜索看的时候,使用的建立定时计划一直失败,后面在群里询问,说是oracle 11 以后使用我现在的建立定时计划的sql 比较好。
代码100分
begin dbms_scheduler.create_job( job_name => "update_job", job_type => "STORED_PROCEDURE", job_action => "update_gps", start_date => to_date("2020-01-20 12:30:00","yyyy-mm-dd hh24:mi:ss"), repeat_interval => "freq=minutely;interval=10", enabled => true, comments => "定时处理轨迹坐标"); end;
-
这里可以看到,我的job_type 是 STORED_PROCEDURE 也就是存储过程,job 的action 是 我的函数名,下面的 repeat_interval 是 执行的规则,我设置的是按照分钟执行,然后 10分钟一次。上面的start_date 是开始执行的时间。
-
然后执行这个建立定时计划的sql。 显示执行成功。
#查询所有用户调度作业
select * from ALL_SCHEDULER_JOBS;
#查询当前用户调度作业:
select * from USER_SCHEDULER_JOBS;
#查询当前用户定时任务表
select * from user_jobs;
#查询所有用户定时任务表
select * from all_jobs;
#查询dba用户的定时任务表
select * from dba_jobs;
这里我们使用的是查询所有用户调度作业这个sql
关于调度任务遇到的问题,找到的资料 参考链接
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10171.html