2

すべて NUMBER である 3 つの引数を取るストアド プロシージャ parse_data があります。3 つの引数を持つプログラムと、ストアド プロシージャを実行するジョブを作成しました。コードは次のようになります。

BEGIN
  dbms_scheduler.create_program(program_name        => 'PARSE_PROGRAM',
                          program_type        => 'STORED_PROCEDURE',                                                          
                          program_action      => 'parse_data', 
                          number_of_arguments => 3,
                          enabled             => false,
                          comments            => '');

  dbms_scheduler.define_program_argument(program_name      => 'PARSE_PROGRAM',
                                   argument_name     => 'file_id',
                                   argument_position => 1,
                                   argument_type     => 'NUMBER',
                                   default_value     => '');

  dbms_scheduler.define_program_argument(program_name      => 'PARSE_PROGRAM',
                                   argument_name     => 'file_upload_id',
                                   argument_position => 2,
                                   argument_type     => 'NUMBER',
                                   default_value     => '');    

  dbms_scheduler.define_program_argument(program_name      => 'PARSE_PROGRAM',
                                   argument_name     => 'type_id',
                                   argument_position => 3,
                                   argument_type     => 'NUMBER',
                                   default_value     => '');                                       

  dbms_scheduler.enable (name => 'PARSE_PROGRAM');

  dbms_scheduler.create_job(job_name        => 'parse_job',
                          program_name    => 'PARSE_PROGRAM',
                          start_date      => systimestamp);

 END;

私の質問は、このSQLが実行され、プログラムとジョブがdbmsにあるということです。実際にジョブを実行して3つの引数を渡すにはどうすればよいですか?

4

2 に答える 2

4

最初にジョブを作成し、次に引数を定義してから実行する必要があります。作成するときは、有効な属性を false に設定して、まだ実行されないようにします。

dbms_scheduler.create_job(job_name        => 'parse_job',
                          program_name    => 'PARSE_PROGRAM',
                          start_date      => systimestamp,
                          enabled         => false );

次に、引数をジョブに渡します。

dbms_scheduler.set_job_argument_value(job_name => 'parse_job',
                                      argument_position => 1,
                                      argument_value => 1);

次に、次の呼び出しで有効にします。

dbms_scheduler.enable('parse_job');
于 2013-07-30T14:30:14.673 に答える