Oracle 编写存储过程并设置定时执行

Oracle 版本:11g

PL/SQL 版本:11.0.3.1770

1.如果编写单个存储过程,则直接在procedure新建并编写;如果需要写多个同类功能的存储过程,为了方便管理,可以现在package中定义,然后在package bodies 中编写过程体,如下图所示:

1.1 编写单个procedure

1.1.1右键procedure,新建——填写过程名和相关参数:

 1.1.2编写过程,可以修改方法名和参数(该过程功能是打印输入的参数):

1.1.3点击F8提交存储过程,没有报错的话会在procedure包下出现新增的p_test过程:

扫描二维码关注公众号,回复: 7528665 查看本文章

 1.1.4右键p_test——点击test——输入参数——点击F9或者左上角(start debugger)

 1.1.5点击run(或Ctrl + R)执行

 1.1.6切换到DBMS ouput 可以看到过程的执行结果:

1.2 设置定时任务执行存储过程


1.2.1找到jobs包

 1.2.2右键新建一个定时任务,Name-给该定时任务命名;Type-选择Store procedure(即执行的是一个存储过程);Action-填写编写的存储过程名称;Start date-开始时间;Frequency-选择执行频率;Interval-间隔时间(为了方便看到效果,这里设置了10秒执行一次);Job class-选择default job class即可;下方填入存储过程的参数,点击Apply即可。

 

 1.2.3此时存储过程就会每10秒自动执行了,点击下图选项可以看到执行详情和日志,点击reflash刷新一下即可:

   以上就是一个完成的编写存储过程到定时执行的过程,如果编写的存储过程函数体是查询某个表的数据然后插入另外的表的,就可以实现定时从远程数据库把数据插入到本地数据的功能,这也是存储过程定时任务常用的场景。


1.3 多个同类型的存储过程可以在package中定义,然后再package bodies 中实现:

1.3.1新建package,定义名称和填写包的用途:

1.3.2定义存储过程,此处定义了一个无参的p_apple和一个有参的p_orange;

1.3.3按F8提交,package下多了一个PA_EATFOOD,同时package bodies下多了一个同名的PA_EATFOOD,在此编写函数的详细方法;

 暂时不需要写的函数,可以用null设置为无功能的空方法,确认无误后点击F8执行即可。

1.3.4测试,点击左方的函数,右键test,进入执行单个函数进行测试操作:

 1.3.5设置定时任务跟1.2过程一样,唯一的区别是Action 选项要在过程名前面加上包名,本例中即PA_EATFOOD.p_apple和PA_EATFOOD.p_orange。

猜你喜欢

转载自www.cnblogs.com/gdou/p/11712547.html