2012-02-07 16 views
2

dbmsジョブから呼び出されるストアド・プロシージャがあります。すなわちスケジューラ・ジョブを介してoracleストアド・プロシージャに引数を渡す

DBMS_SCHEDULER.RUN_JOB ('Procedure_JB', FALSE); 

Javaコードストアドプロシージャは、いくつかのことをした後、Procedure_JBを非同期的に起動します。そして、このProcedure_JBはProcedure_PRogramを呼び出し、プログラムはストアドプロシージャを呼び出します。

ストアドプロシージャに引数を渡すにはどうすればよいですか?

  • 私がジョブに渡す必要がある引数は、javaからです。

答えて

6

ジョブを定義して、引数を受け入れるためのProcedure_JB。次に、dbms_scheduler.set_job_argument_valueを使用して、ジョブを実行するプログラムに渡す引数の値を定義します。例(https://forums.oracle.com/forums/thread.jspa?threadID=483135から取られる)

-- create a stored procedure with two arguments 
create or replace procedure myproc (arg1 in varchar2, arg2 in varchar2) 
is BEGIN null; END; 
/

-- create a program with two arguments and define both 
begin 
dbms_scheduler.create_program 
(
program_name=>'myprog', 
program_action=>'myproc', 
program_type=>'STORED_PROCEDURE', 
number_of_arguments=>2, enabled=>FALSE 
) ; 

dbms_scheduler.DEFINE_PROGRAM_ARGUMENT(
program_name=>'myprog', 
argument_position=>1, 
argument_type=>'VARCHAR2', 
DEFAULT_VALUE=>'13'); 

dbms_scheduler.DEFINE_PROGRAM_ARGUMENT(
program_name=>'myprog', 
argument_position=>2, 
argument_type=>'VARCHAR2'); 

dbms_scheduler.enable('myprog'); 
end; 
/

-- create a job pointing to a program and set both argument values 
begin 
dbms_scheduler.create_job('myjob',program_name=>'myprog'); 
dbms_scheduler.set_job_argument_value('myjob',1,'first arg'); 
dbms_scheduler.set_job_argument_value('myjob',2,'second arg'); 
dbms_scheduler.enable('myjob'); 
end; 
/
+4

どのような悪夢 –

関連する問題