dbms_job和编译指示自治事务之间的区别是什么
发布于 2018-12-11 14:13:35
除了它们的拼写不同之外?它们就像苹果和香蕉一样。
DBMS_JOB package调度和管理作业队列中的作业。它用于在预定的时间运行某些过程。例如,每天02:00,08:00和16:00;或者,每周六12:00,等等。如果你使用的是Windows,它类似于它的任务管理器。或者,在Unix上,它被称为Cron。
它有一个叫DBMS_SCHEDULER的弟弟,他提供了更多的选择。不过,对于简单的工作,我仍然使用DBMS_JOB。更多信息请点击此处:https://docs.oracle.com/database/121/ARPLS/d_job.htm#ARPLS019
Pragma表示该语句是一个编译指示(编译器指令)。Pragma在编译时处理,而不是在运行时处理。它们将信息传递给编译器。
AUTONOMOUS_TRANSACTION杂注改变了子程序在事务中的工作方式。使用此编译指示标记的子程序可以执行SQL操作并提交或回滚这些操作,而无需提交或回滚主事务中的数据。
它通常用于记录过程中的某些信息,而不影响主过程(因为杂注允许记录过程将其插入提交到日志表中,而不影响主过程-它甚至可能失败(并隐式回滚),但您的日志信息将保持完好并可供查看)。
人们在解决变化表错误时误用了它;没错,这个编译指示“修复”了这个问题,但通常是一个错误的解决问题的方法。
有关自主交易的更多信息,请访问:https://docs.oracle.com/database/121/LNPLS/static.htm#LNPLS00609
https://stackoverflow.com/questions/53718138
复制相似问题