2015-03-26 2 views
0

Я пытаюсь создать простую работу, используя dbms_scheduler.create_job с аргументами. Ниже моя простая процедура создания задания:Создание dbms_scheduler.create_job с аргументами

create or replace procedure SCRIPT_DBMS_SCHEDULER 
as 
    v_text varchar2(255):='Parameter passed from Oracle to Linux'; 
    l_job_exists number; 

Begin 
    select count(*) into l_job_exists 
    from user_scheduler_jobs 
    where job_name = 'script_dbms_scheduler_test'; 

    if l_job_exists = 1 then 
    dbms_scheduler.drop_job(job_name => 'script_dbms_scheduler_test'); 
    end if; 

    dbms_output.put_line('I am in Procedure'); 
    dbms_scheduler.create_job 
    (job_name=>'script_dbms_scheduler_test', 
    job_action=>'/data/home/workflow/script_dbms_scheduler.ksh', 
    job_type=>'executable', 
    number_of_arguments=>1, 
    enabled=>TRUE, 
    auto_drop => TRUE, 
    comments=> 'Run shell-script script_dbms_scheduler.ksh'); 
    dbms_scheduler.set_job_argument_value(job_name =>'script_dbms_scheduler_test', argument_position => 1, argument_value => v_text); 
    dbms_scheduler.enable('script_dbms_scheduler_test'); 
    dbms_output.put_line('I am back in Procedure'); 

Exception 
    when others then 
    dbms_output.put_line(sqlcode||sqlerrm); 
end; 

Он отлично работает, когда, когда аргументы 0. Но когда я пытаюсь пройти по-крайней мере 1 аргумент, я получаю следующее сообщение об ошибке:

ORA-27457: argument 1 of job "IITWFU.SCRIPT_DBMS_SCHEDULER_TEST" has no value 

Не уверен, что мне не хватает. Буду признателен за любую оказанную помощь.

Благодаря

ответ

1

Проблема эта строка в скрипте:

enabled=>TRUE, 

Это означает, что работа включена сразу после создания. Однако в этот момент вы не задали аргумент. Отсюда и ошибка.

Так что вам нужно установить enabled=>FALSE (это на самом деле the default for CREATE_JOB()). У вас уже есть вызов ENABLE() задания после того, как ваш вызов SET_ARGUMENT включил его, поэтому ваш код теперь должен работать.

+0

Большое спасибо APC. Это просто работало как чудо :) – Sand

Смежные вопросы