2012-02-07 140 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

什麼是惡夢 – 2013-08-26 19:14:54

相關問題