0

こんにちは、プロシージャを実行する JOB CONTROLLER を作成しています。

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が存在しない」と表示される理由は正しいです

誰でも私を助けてください。

4

1 に答える 1

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');
于 2015-02-06T13:40:11.787 に答える