Stored procedures 通过调度程序作业将参数传递给oracle存储过程
我有一个从dbms作业调用的存储过程。i、 eStored procedures 通过调度程序作业将参数传递给oracle存储过程,stored-procedures,plsql,oracle10g,scheduler,dbms-scheduler,Stored Procedures,Plsql,Oracle10g,Scheduler,Dbms Scheduler,我有一个从dbms作业调用的存储过程。i、 e DBMS_SCHEDULER.RUN_JOB ('Procedure_JB', FALSE); 一个java代码存储过程,在做了一些事情之后,异步启动过程_JB。然后这个过程调用过程,然后程序调用存储过程 如何将参数传递给存储过程 我必须传递给作业的参数来自java 定义作业过程以接受参数。然后使用dbms_scheduler.set_job_argument_value定义要传递到作业将要运行的程序中的参数值。一个例子(摘自) 请改用PLSQ
DBMS_SCHEDULER.RUN_JOB ('Procedure_JB', FALSE);
一个java代码存储过程,在做了一些事情之后,异步启动过程_JB。然后这个过程调用过程,然后程序调用存储过程
如何将参数传递给存储过程
- 我必须传递给作业的参数来自java
请改用PLSQL_块:
begin
dbms_scheduler.create_job (
job_name => 'myjob',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN myproc(''first arg'',''second arg''); END;',
start_date => sysdate,
repeat_interval => 'FREQ=HOURLY',
enabled => true
);
end;
/
I+rep这是因为这是一个更简单的选择,但仅当参数类型为VARCHAR2时。如果该过程需要其他参数(例如,时间戳参数),则此操作将无法运行。如果需要异步运行作业,请跳过SYSDATE列。噩梦可能是@AlexanderMills,但这是处理带有
VARCHAR2
以外参数的任意程序的通用方法。如果所有参数的类型都是VARCHAR2
,那么只需执行Steve G
建议的操作即可。
begin
dbms_scheduler.create_job (
job_name => 'myjob',
job_type => 'PLSQL_BLOCK',
job_action => 'BEGIN myproc(''first arg'',''second arg''); END;',
start_date => sysdate,
repeat_interval => 'FREQ=HOURLY',
enabled => true
);
end;
/