我不清楚这一点,在DBMS_SCHEDULER中我们有CREATE_PROGRAM CREATE_JOB CREATE_SCHEDULE等,在阅读oracle doc之后仍然不清楚要使用什么,在Oracle方面,我将使用DBMS_SCHEDULER在其中插入新消息在适当的时候排队,我计划创建调度程序以在特定时间执行它,然后创建程序来执行我的PL / SQL块,这将把消息排入队列中或者不使用CREATE_SCHEDULE和CREATE_PROGRAM,CREATE_JOB执行这两个作业,哪个用?请指导我,我是否正确,如果没有,请指正。
三江源
答案 0 :(得分:5)
create_job
是安排通话的基本电话。您不必创建命名程序或计划来执行此操作。如果你有几个想要使用这个调用的作业,那么创建一个命名的程序/日程表是有用的。您只需引用指定的程序计划,而不是让每个作业都保存该副本。
e.g。如果你有5个工作想要调用你的包MYPKG.ENTRY_PROG(param)
并且每个工作只使用不同的参数值,我会说你想用create_program
来定义那个pl / sql调用然后{{1引用该程序名称+设置选择的参数值。这样,如果您想稍后重命名API,您不必更改五个单独的作业来执行此操作。
如果您的工作只是一个调用其他工作不会调用的例程的独立工作,那么您不必使用create_job
/ create_program
,只需使用{{1直接。
我使用create_schedule
的一个示例是调用测试工具。我的测试工具包被称为create_job
所以我定义了一些工作,这些工作将各种API排入,以便在上午9点,下午12点和下午5点运行。而不是单独定义每个作业调用我只是调用create_program
,如:
pkg_test_harness.queue_tests(p_set_name in varchar2)
然后定义每个“作业”指向程序。
create_program
我没有创建命名的时间表,因为这些时间表对于单个作业是唯一的。