2015-02-06 13 views
0

안녕하세요 프로 시저를 실행하기 위해 작업 컨트롤러를 생성하고 있습니다. 내가DBMS_SCHEDULER.set_job_argument_value - ORA-27473 : 인수가 존재하지 않습니다.

(17)로 오류라는 작업 제어기 절차를 실행하려고하면

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; 

입니다 : 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는

아무도 제발 도와 드릴까요 "존재하지 않습니다.

+0

이상합니다. 나를 위해 일했다. 어떤 oracle 버전입니까? – OldProgrammer

+0

@OldProgrammer 11g 표준 버전 –

+0

참조 http://dba.stackexchange.com/questions/42119/passing-parameters-to-a-procedure-executed-by-dbms-scheduler – Vadzim

답변

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');