plsql developer简单实现定时器&存储过程

一、定时器
直接在DBMS_Jobs右键new一个定时器出来。需要填写的部分主要有以下两个部分
在这里插入图片描述

  1. what主要填写你需要定时器执行的存储过程名称。如上图所示,我写了一个名称为“AddHydropowerData”的存储过程。
  2. Interval为定时器执行的时间。
    (1).每分钟执行
    Interval => TRUNC(sysdate,‘mi’) + 1/ (24*60)
    每小时执行
    Interval => TRUNC(sysdate,‘hh’) + 1/ (24)
    (2).每天定时执行
    例如:每天的凌晨1点执行
    Interval => TRUNC(sysdate+ 1) +1/ (24)
    (3).每周定时执行
    例如:每周一凌晨1点执行
    Interval => TRUNC(next_day(sysdate,‘星期一’))+1/24
    (4).每月定时执行
    例如:每月1日凌晨1点执行
    Interval =>TRUNC(LAST_DAY(SYSDATE))+1+1/24
    (5).每季度定时执行
    例如每季度的第一天凌晨1点执行
    Interval => TRUNC(ADD_MONTHS(SYSDATE,3),‘Q’) + 1/24
    (6).每半年定时执行
    例如:每年7月1日和1月1日凌晨1点
    Interval => ADD_MONTHS(trunc(sysdate,‘yyyy’),6)+1/24
    (7).每年定时执行
    例如:每年1月1日凌晨1点执行
    Interval =>ADD_MONTHS(trunc(sysdate,‘yyyy’),12)+1/24

二、 存储过程
procedures右键新建存储过程
在这里插入图片描述
以上是我使用存储过程的简单例子,经过学习,一些存储过程的使用语法如下

--***************************自定义存储过程名和参数*****************************
create or replace procedure test(dataAge number, dataMyName VARCHAR2) as--is也可以

  --***************************自定义变量区域*****************************
  --可以在自定义的时候赋值
  age    number := dataAge;
  myName varchar2(5) := dataMyName;
  whileCount number:=1;
  --也可以直接自定义查询sql结果集
  cursor dataResult is
    select * from S_TEST;

  --************************具体操作区域*********************************
begin
  -------------直接赋值------------
  age    := 1;
  myName := '小米';
  ------------通过sql赋值(单独select字段需要into赋值,否则报错)----------
  select t.age  into age from S_TEST t where t.id = '1';
  select t.name into myName from S_TEST t where t.id = '1';
  SELECT t.age,t.name into age,myName from S_TEST t where t.id = '1';
  ------------for循环语句--------------
  for data in dataResult loop
    age    := data.age;
    myName := data.name;
  end loop;
  ------------直接在for循环语句赋值--------------
   for data in ( select t.* from S_TEST t) loop
    age    := data.age;
    myName := data.name;
  end loop;
  ------------count赋值(当不存在数据时返回null)--------------
  select count(*) into whileCount from S_TEST;
  
  ------------while循环语句--------------
  while whileCount<5 loop  
    whileCount:=whileCount+1;
  end loop;
  ------------if判断语句--------------
  If (whileCount=1) then
      null;
  Elsif (whileCount=2) then
       null;
  Else
       null;
  End if;
 ------------报异常语句(NO_DATA_FOUND为没有数据异常)--------------
  select t.age into age from S_TEST t where t.id = '1';

  EXCEPTION
  WHEN NO_DATA_FOUND THEN
     null;
 ------------别名不能和字段名相同,否则编译通过运行报错--------------

end test;

三、调试

  1. 通过定时器调试
    即将定时器触发事件调到当前时间的后一分钟即可
  2. 存储过程直接调试
    直接存储过程右键-test,填写相关参数即可进行调试
    在这里插入图片描述
    在这里插入图片描述
    学无止境!!!!!!!!!!!
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值