Stored procedures 通过调度程序作业将参数传递给oracle存储过程

Stored 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作业调用的存储过程。i、 e

DBMS_SCHEDULER.RUN_JOB ('Procedure_JB', FALSE);
一个java代码存储过程,在做了一些事情之后,异步启动过程_JB。然后这个过程调用过程,然后程序调用存储过程

如何将参数传递给存储过程

  • 我必须传递给作业的参数来自java

定义作业过程以接受参数。然后使用dbms_scheduler.set_job_argument_value定义要传递到作业将要运行的程序中的参数值。一个例子(摘自)


请改用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;
/