job的创建更改及删除.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
在Oracle数据库中,`DBMS_JOB`包是一个用于创建、修改和管理后台作业的重要工具,这些作业可以在指定的时间间隔自动执行存储过程或其他SQL任务。在文档"job的创建更改及删除.docx"中,主要涉及了如何使用`DBMS_JOB`进行存储过程的创建、作业的提交、运行、查询以及删除,同时也讲解了时间表达式的使用,以精确控制作业的执行频率。下面将详细解释这些知识点。 创建存储过程: 存储过程`MY_Procedure`是一个示例,它使用游标`cur`从`users`表中选取`name`长度大于10的记录,并将这些记录插入到`users_temp`表中。游标允许在循环中处理结果集。 ```sql CREATE OR REPLACE PROCEDURE MY_Procedure IS CURSOR cur IS SELECT * FROM users WHERE LENGTH(name) > 10; BEGIN FOR user IN cur LOOP INSERT INTO users_temp VALUES (user.id, user.passwd); END LOOP; END; ``` 创建作业: 使用`DBMS_JOB.SUBMIT`来提交作业,将作业编号存储在变量`job_num`中,指明要执行的存储过程`MY_Procedure`,并设定首次执行时间(`sysdate`)和下次执行的间隔(`sysdate+1`)。 ```sql DECLARE job_num NUMBER; BEGIN DBMS_JOB.SUBMIT( job => :job_num, what => 'MY_Procedure;', next_date => SYSDATE, interval => 'SYSDATE+1' ); COMMIT; END; ``` 接着,运行作业: 使用`DBMS_JOB.RUN`来启动指定编号的作业。 ```sql BEGIN DBMS_JOB.RUN(:job_num); END; ``` 然后,查询作业: 可以使用`USER_JOBS`视图来查看当前用户的所有作业信息。 ```sql SELECT priv_user, job, what FROM user_jobs; ``` 删除作业: 使用`DBMS_JOB.REMOVE`来删除指定的作业。 ```sql BEGIN DBMS_JOB.REMOVE(:job_num); END; ``` 时间表达式: 在Oracle中,可以通过不同的表达式来控制作业的执行频率,例如: - `SYSDATE+1/1440`:每分钟执行一次。 - `SYSDATE+5/1440`:每5分钟执行一次。 - `TRUNC(SYSDATE)+2/24`:下一天的凌晨2点执行。 - `'SYSDATE + 7'`:最后一次执行后的7天执行。 - `SYSDATE + 1/48`:每半小时执行一次。 - `NEXT_DAY(TRUNC(SYSDATE), 'MONDAY') + 15/24`:每个周一的15分钟后执行。 - `NEXT_DAY(ADD_MONTHS(TRUNC(SYSDATE,'Q'), 3), 'THURSDAY')`:每个季度的第一个星期四执行。 `DBMS_JOB`的`SUBMIT`过程接受的参数解释: - `job`:作业的唯一标识,通常为一个输出变量。 - `what`:要执行的PL/SQL代码或存储过程名。 - `next_date`:作业的首次执行时间。 - `interval`:作业的执行间隔,可以包含时间单位如`SYSDATE+1/1440`等。 - `no_parse`:布尔值,指示是否在提交作业时解析`what`参数。 `TRUNC`函数: `TRUNC`函数用于去除日期或数值的特定部分,如年、月、日等。例如: - `TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-ddhh:mi'),'yyyy')`:按年截尾,返回2008年的第一天。 - `TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-ddhh:mi'),'mm')`:按月截尾,返回2008年3月的第一天。 - `TRUNC(TO_DATE('2008-03-01 08:23','yyyy-mm-ddhh:mi'),'dd')`:按日截尾,返回2008年3月1日。 通过这些知识点,我们可以灵活地在Oracle数据库中创建定时任务,满足不同业务需求。
剩余15页未读,继续阅读
- 粉丝: 1w+
- 资源: 7万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助