首页 > Linux操作系统 > Linux操作系统 > 删除一个JOB需要提交
删除一个JOB需要提交
一般来说,执行一个存储过程是不需要COMMIT的。但是DBMS_JOB.REMOVE有例外:
按文档中的描述是:You must issue a COMMIT statement immediately after the statement.
版本:10.2.0.1
windows
今天在做一个测试的时候发现的,
记录一下:
会话1:
SQL> variable job number;
SQL> begin
2 dbms_job.submit(:job,'ab;',sysdate,'sysdate+1');
3 commit;
4 end;
5 /
SQL> col what format a10;
SQL> select job,what from user_jobs;
JOB WHAT
---------- ----------
2 ab;
SQL> exec dbms_job.remove(2);
PL/SQL 过程已成功完成。
SQL> rollback;
回退已完成。
SQL> select job,what from user_jobs;
JOB WHAT
---------- ----------
2 ab;
SQL> exec dbms_job.remove(2);
PL/SQL 过程已成功完成。
SQL> select job,what from user_jobs;
未选定行
SQL>
会话2:
SQL> select job from dba_jobs;
JOB
----------
2
SQL>
会话1:
SQL> commit;
提交完成。
SQL> select job,what from user_jobs;
未选定行
会话2:
SQL> select job from dba_jobs;
JOB
----------
SQL>
试一下回滚:
SQL> variable job number;
SQL> begin
2 dbms_job.submit(:job,'ab;',sysdate,'sysdate+1');
3 commit;
4 end;
5 /
PL/SQL 过程已成功完成。
SQL> select job from dba_jobs;
JOB
----------
21
SQL> exec dbms_job.remove(21);
PL/SQL 过程已成功完成。
SQL> select job from dba_jobs;
未选定行
SQL> rollback;
回退已完成。
SQL> select job from dba_jobs;
JOB
----------
21
SQL>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/104152/viewspace-139972/ ,如需转载,请注明出处,否则将追究法律责任。