我尝试使用
dbms_scheduler.create_job()
创建作业,但在已经存在的环境中,会抛出错误,指出“尝试创建一个名称已被同一架构中的另一个对象使用的对象。 ”.之后,我尝试使用
dbms_scheduler.drop_job()
删除现有作业,但在该作业不存在的环境中,会抛出错误,指出“指定的对象不存在,未授予权限,或者该对象属于类型错误。”。有办法创建或替换工作吗?
DECLARE
l_job VARCHAR2(100) := 'MY_JOB';
FUNCTION job_exists (job_name_i VARCHAR2) RETURN BOOLEAN
IS
l_dummy INTEGER;
BEGIN
SELECT 1 INTO l_dummy FROM user_scheduler_jobs WHERE job_name = job_name_i;
RETURN true;
EXCEPTION WHEN NO_DATA_FOUND THEN
RETURN false;
END;
BEGIN
IF job_exists(job_name_i => l_job) THEN
dbms_scheduler.drop_job ('MY_JOB');
END IF;
dbms_scheduler.create_job(
job_name => 'MY_JOB'
,job_type => 'PLSQL_BLOCK'
,job_action => 'BEGIN NULL; END;'
);
END;
/