【问题标题】:Use Job ID as a procedure parameter使用 Job ID 作为过程参数
【发布时间】:2013-10-28 12:14:04
【问题描述】:

我正在使用 DBMS_JOB。是否可以将jobId(提交方法的OUT参数)作为调用过程的参数传递?

这就是我正在尝试的:

jobno                 NUMBER;

sql_string:= 'BEGIN BPM_API_BATCH.' || l_procedure_name || '(:jobno, sysdate);  END;';

DBMS_JOB.SUBMIT (jobno,
                 sql_string,
                 sysdate,
                 null); 

【问题讨论】:

    标签: oracle plsql dbms-job


    【解决方案1】:

    您真的需要将工作编号作为参数传递吗?

    在作业中,您可以调用SYS_CONTEXT( 'USERENV', 'BG_JOB_ID' ) 来获取job_id,而无需将其作为参数传入(如果作业中未调用该过程,则将返回NULL

    【讨论】:

    • 是的,这正是我所需要的。我不知道它可以这样获取。发送
    【解决方案2】:

    DBMS_JOB.WHAT 过程可用于更改 PL/SQL 以运行:
    http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_job.htm#i1000977

    CREATE TABLE testt(
      val varchar2(100)
    );
    
    DECLARE
      jobno   NUMBER;
    BEGIN
       DBMS_JOB.SUBMIT(
          job =>      jobno,
          what =>     'BEGIN NULL; END;',
          NEXT_DATE => sysdate
       );
       DBMS_JOB.WHAT(
          job  => jobno,
          what => 'BEGIN INSERT INTO testt VALUES(''jobno = ' || jobno || ''' ); commit; end;'
        );
        commit;
    END;
    /
    
    
    
    SELECT * FROM testt;
    
    VAL    
    -------------
    jobno = 26    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 2016-03-11
      • 1970-01-01
      相关资源
      最近更新 更多