我的编程空间,编程开发者的网络收藏夹
学习永远不晚

日常记录-oracle建立定时计划,调用存储过程

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

日常记录-oracle建立定时计划,调用存储过程

日常记录-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;
    
  • 从上面的sql 可以看出,我这边定义了两个变量,分别是 ROWNUM_BEGIN 与 ROWNUM_END。不同的是,一个是sql赋值,一个是直接赋值。

  • 进行编译-编译成功

  • 进行debug 测试,测试成功

  • 备注:这里我在测试的时候,本地会一直出现运行中状态,我后面使用的是debug 进行测试,测试成功。

  • 建立定时计划
    • 定时计划,我这边的需求是每10分钟执行一次。

    • 备注: 这里我在网上搜索看的时候,使用的建立定时计划一直失败,后面在群里询问,说是oracle 11 以后使用我现在的建立定时计划的sql 比较好。

      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

  • 关于调度任务遇到的问题,找到的资料 参考链接

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    日常记录-oracle建立定时计划,调用存储过程

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    日常记录-oracle建立定时计划,调用存储过程

    打开plsql,选择Procedures,进行新建。 CREATE OR REPLACE procedure update_gps is ROWNUM_BEGIN NUMBER(35); ROWNUM_END NUMBE
    日常记录-oracle建立定时计划,调用存储过程
    2016-03-06

    编程热搜

    目录