删除oracle的drop_job,oracle – DBMS_SCHEDULER.DROP_JOB只有存在

有两种主要的模式可以应用于异常处理; (LBYL),“请求宽恕比许可更容易”(EAFP).在尝试放弃之前,LBYL将主张检查该作业是否存在. EAFP将涉及尝试放弃该作业,然后捕获并忽略该特定错误(如果发生).

如果您要应用LBYL,您可以查询系统视图USER_SCHEDULER_JOBS查看您的作业是否存在.如果这样做,请放下.

declare

l_job_exists number;

begin

select count(*) into l_job_exists

from user_scheduler_jobs

where job_name = 'STATISTICS_COLUMNS_JOB'

;

if l_job_exists = 1 then

dbms_scheduler.drop_job(job_name => 'STATISTICS_COLUMNS_JOB');

end if;

end;

declare

job_doesnt_exist EXCEPTION;

PRAGMA EXCEPTION_INIT( job_doesnt_exist,-27475 );

begin

dbms_scheduler.drop_job(job_name => 'STATISTICS_COLUMNS_JOB');

exception when job_doesnt_exist then

null;

end;

值得注意的是关于第二种方法的两件事情.

>我只是捕捉到这个特定异常提出的错误.使用EXCEPTION WHEN OTHERS可以实现同样的事情,但我强烈建议不要这样做.

如果你处理一个例外,你应该知道你将要做的事情.您不可能使用OTHERS正确处理每一个Oracle异常,并且如果您这样做,您应该将它们记录在他们会被注意的地方.引用Oracle的Guidelines for Avoiding and Handling Exceptions:

Whenever possible,write exception handlers for named exceptions instead of using OTHERS exception handlers.

> Oracle的exception propagation工作从内部块到外部块,所以原来的错误原因将是第一个例外.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值