【问题标题】:How to use Oracle Apex session in scheduled job如何在计划作业中使用 Oracle Apex 会话
【发布时间】:2017-02-06 09:31:01
【问题描述】:

我正在使用 dbms_scheduler.create_job 从我的 Oracle Apex 应用程序启动一个 plsql 过程。作业立即开始。

该过程失败,因为它使用 Oracle Apex 集合并且不会在 Oracle Apex 应用程序上下文之外运行。

互联网上有一些代码examples 展示了如何创建 Oracle Apex 应用程序上下文,但我想知道是否可以使用现有的上下文。例如,将会话 ID 传递给作业并在那里重用它。

如果可能,如何实现?Oracle Apex 4.02 和 5.02 会有所不同吗?

【问题讨论】:

  • 最终通过将应用程序 ID、工作区 ID 和应用程序用户传递给过程来创建新的 Apex 应用程序上下文。

标签: oracle session scheduled-tasks oracle-apex


【解决方案1】:

创建一个类型,将其传递给您工作中使用的过程。使用参数创建作业。

包括表类型包括 Blob 和文件名的示例:

CREATE OR REPLACE TYPE blob_files AS OBJECT(
              attachment BLOB,
              filename varchar2(255),
              mime_type varchar2(255)
             )

create or replace type blobs as table of blob_files;

declare
  attachments BLOBS;
  i NUMBER;
begin
  select blob_files(invoice_blob,invoice_filename, mime_type) 
  BULK COLLECT INTO attachments
  from receive.inv_invoice_blobs
  where invoice_id = 223730;

  i := attachments.FIRST;
  WHILE i IS NOT NULL LOOP
    htp.p(dbms_lob.getlength(attachments(i).attachment) || ' ' || attachments(i).filename);
    i := attachments.NEXT(i);
  END LOOP;
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-26
    • 2010-09-19
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2010-11-05
    • 2019-07-22
    • 2023-04-11
    相关资源
    最近更新 更多