DBMS_SCHEDULER.set_job_argument_value - ORA-27473: аргумент не существует
Привет я создаю JOB CONTROLLER для запуска процедуры.
КОНТРОЛЛЕР РАБОТЫ
CREATE OR REPLACE PROCEDURE "GCCPMAINT"."JOB_CONTROLLER" as
programTotal number;
BEGIN
dbms_scheduler.create_program (
program_name => 'PGM_CLEANSE_BRNGB',
program_type => 'STORED_PROCEDURE',
program_action => 'OPT_SALES',
number_of_arguments => 1,
enabled => FALSE);
dbms_scheduler.DEFINE_PROGRAM_ARGUMENT(
program_name=>'PGM_CLEANSE_BRNGB',
argument_name=>'card_no',
argument_position=>1,
argument_type=>'varchar2');
dbms_scheduler.enable('PGM_CLEANSE_BRNGB');
DBMS_SCHEDULER.drop_job(job_name => 'JOB_Cleanse_BRNGB', force => true);
dbms_scheduler.create_job('JOB_Cleanse_BRNGB',program_name=>'PGM_CLEANSE_BRNGB',auto_drop=> true,start_date=>SYSDATE,job_style=> 'LIGHTWEIGHT');
dbms_scheduler.set_job_argument_value(
job_name=>'JOB_Cleanse_BRNGB',
argument_name=>'card_no',---> error says here
argument_value=>'1234');
dbms_scheduler.enable('JOB_Cleanse_BRNGB');
END;
вот моя процедура действий программы
CREATE OR REPLACE PROCEDURE "OPT_SALES"(card_no VARCHAR2)
as
BEGIN
DBMS_OUTPUT.PUT_LINE ('card-Number is'||card_no);
END;
Когда я пытаюсь запустить процедуру контроллера задания, он говорит об ошибке как
17:42:28 [@CALL - 0 строк, 0,000 с] [Код ошибки: 27473, состояние SQL: 99999] ORA-27473: аргумент CARD_NO не существует ORA-06512: в строке "SYS.DBMS_ISCHED", строка 244 ORA-06512: в "SYS.DBMS_SCHEDULER", строка 716 ORA-06512: в "GCCPMAINT.JOB_CONTROLLER", строка 27 ORA-06512: в строке 1
У меня есть правильный аргумент, почему он говорит, что "аргумент CARD_NO не существует"
Кто-нибудь может мне помочь, пожалуйста.
1 ответ
Вы также можете вызвать процедуру без использования программы. Пожалуйста, посмотрите на это. (Кроме того, auto_drop по умолчанию имеет значение true)
DBMS_SCHEDULER.CREATE_JOB
(
job_name => 'JOB_Cleanse_BRNGB'
,job_class => 'DEFAULT_JOB_CLASS'
,job_type => 'STORED_PROCEDURE'
,start_date => SYSDATE
,job_style => 'LIGHTWEIGHT'
,job_action => 'OPT_SALES'
,number_of_arguments => 1
);
dbms_scheduler.set_job_argument_value(
job_name=>'JOB_Cleanse_BRNGB',
argument_name=>'CARD_NO',---> error says here
argument_value=>'1234');
dbms_scheduler.enable('JOB_Cleanse_BRNGB');